{
  "contractName": "PAMEngine",
  "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"
    },
    {
      "inputs": [],
      "name": "contractType",
      "outputs": [
        {
          "internalType": "enum ContractType",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "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": "cycleOfInterestPayment",
              "type": "tuple"
            },
            {
              "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": "cycleOfRateReset",
              "type": "tuple"
            },
            {
              "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": "cycleOfScalingIndex",
              "type": "tuple"
            },
            {
              "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": "cycleOfFee",
              "type": "tuple"
            }
          ],
          "internalType": "struct PAMTerms",
          "name": "terms",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "state",
          "type": "tuple"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "externalData",
          "type": "bytes32"
        }
      ],
      "name": "computeStateForEvent",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "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": "cycleOfInterestPayment",
              "type": "tuple"
            },
            {
              "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": "cycleOfRateReset",
              "type": "tuple"
            },
            {
              "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": "cycleOfScalingIndex",
              "type": "tuple"
            },
            {
              "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": "cycleOfFee",
              "type": "tuple"
            }
          ],
          "internalType": "struct PAMTerms",
          "name": "terms",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "state",
          "type": "tuple"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "externalData",
          "type": "bytes32"
        }
      ],
      "name": "computePayoffForEvent",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "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": "cycleOfInterestPayment",
              "type": "tuple"
            },
            {
              "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": "cycleOfRateReset",
              "type": "tuple"
            },
            {
              "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": "cycleOfScalingIndex",
              "type": "tuple"
            },
            {
              "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": "cycleOfFee",
              "type": "tuple"
            }
          ],
          "internalType": "struct PAMTerms",
          "name": "terms",
          "type": "tuple"
        }
      ],
      "name": "computeInitialState",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "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": "cycleOfInterestPayment",
              "type": "tuple"
            },
            {
              "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": "cycleOfRateReset",
              "type": "tuple"
            },
            {
              "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": "cycleOfScalingIndex",
              "type": "tuple"
            },
            {
              "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": "cycleOfFee",
              "type": "tuple"
            }
          ],
          "internalType": "struct PAMTerms",
          "name": "terms",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "segmentStart",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "segmentEnd",
          "type": "uint256"
        }
      ],
      "name": "computeNonCyclicScheduleSegment",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "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": "cycleOfInterestPayment",
              "type": "tuple"
            },
            {
              "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": "cycleOfRateReset",
              "type": "tuple"
            },
            {
              "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": "cycleOfScalingIndex",
              "type": "tuple"
            },
            {
              "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": "cycleOfFee",
              "type": "tuple"
            }
          ],
          "internalType": "struct PAMTerms",
          "name": "terms",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "segmentStart",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "segmentEnd",
          "type": "uint256"
        },
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        }
      ],
      "name": "computeCyclicScheduleSegment",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "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": "cycleOfInterestPayment",
              "type": "tuple"
            },
            {
              "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": "cycleOfRateReset",
              "type": "tuple"
            },
            {
              "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": "cycleOfScalingIndex",
              "type": "tuple"
            },
            {
              "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": "cycleOfFee",
              "type": "tuple"
            }
          ],
          "internalType": "struct PAMTerms",
          "name": "terms",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "lastScheduleTime",
          "type": "uint256"
        },
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        }
      ],
      "name": "computeNextCyclicEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "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": "cycleOfInterestPayment",
              "type": "tuple"
            },
            {
              "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": "cycleOfRateReset",
              "type": "tuple"
            },
            {
              "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": "cycleOfScalingIndex",
              "type": "tuple"
            },
            {
              "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": "cycleOfFee",
              "type": "tuple"
            }
          ],
          "internalType": "struct PAMTerms",
          "name": "",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "",
          "type": "tuple"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "",
          "type": "tuple"
        }
      ],
      "name": "isEventScheduled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "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\":[{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"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\":\"cycleOfInterestPayment\",\"type\":\"tuple\"},{\"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\":\"cycleOfRateReset\",\"type\":\"tuple\"},{\"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\":\"cycleOfScalingIndex\",\"type\":\"tuple\"},{\"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\":\"cycleOfFee\",\"type\":\"tuple\"}],\"internalType\":\"struct PAMTerms\",\"name\":\"terms\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"segmentStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"segmentEnd\",\"type\":\"uint256\"},{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"}],\"name\":\"computeCyclicScheduleSegment\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"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\":[{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"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\":\"cycleOfInterestPayment\",\"type\":\"tuple\"},{\"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\":\"cycleOfRateReset\",\"type\":\"tuple\"},{\"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\":\"cycleOfScalingIndex\",\"type\":\"tuple\"},{\"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\":\"cycleOfFee\",\"type\":\"tuple\"}],\"internalType\":\"struct PAMTerms\",\"name\":\"terms\",\"type\":\"tuple\"}],\"name\":\"computeInitialState\",\"outputs\":[{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"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\":\"cycleOfInterestPayment\",\"type\":\"tuple\"},{\"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\":\"cycleOfRateReset\",\"type\":\"tuple\"},{\"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\":\"cycleOfScalingIndex\",\"type\":\"tuple\"},{\"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\":\"cycleOfFee\",\"type\":\"tuple\"}],\"internalType\":\"struct PAMTerms\",\"name\":\"terms\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"lastScheduleTime\",\"type\":\"uint256\"},{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"}],\"name\":\"computeNextCyclicEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"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\":\"cycleOfInterestPayment\",\"type\":\"tuple\"},{\"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\":\"cycleOfRateReset\",\"type\":\"tuple\"},{\"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\":\"cycleOfScalingIndex\",\"type\":\"tuple\"},{\"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\":\"cycleOfFee\",\"type\":\"tuple\"}],\"internalType\":\"struct PAMTerms\",\"name\":\"terms\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"segmentStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"segmentEnd\",\"type\":\"uint256\"}],\"name\":\"computeNonCyclicScheduleSegment\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"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\":\"cycleOfInterestPayment\",\"type\":\"tuple\"},{\"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\":\"cycleOfRateReset\",\"type\":\"tuple\"},{\"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\":\"cycleOfScalingIndex\",\"type\":\"tuple\"},{\"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\":\"cycleOfFee\",\"type\":\"tuple\"}],\"internalType\":\"struct PAMTerms\",\"name\":\"terms\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"state\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"externalData\",\"type\":\"bytes32\"}],\"name\":\"computePayoffForEvent\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"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\":\"cycleOfInterestPayment\",\"type\":\"tuple\"},{\"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\":\"cycleOfRateReset\",\"type\":\"tuple\"},{\"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\":\"cycleOfScalingIndex\",\"type\":\"tuple\"},{\"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\":\"cycleOfFee\",\"type\":\"tuple\"}],\"internalType\":\"struct PAMTerms\",\"name\":\"terms\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"state\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"externalData\",\"type\":\"bytes32\"}],\"name\":\"computeStateForEvent\",\"outputs\":[{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractType\",\"outputs\":[{\"internalType\":\"enum ContractType\",\"name\":\"\",\"type\":\"uint8\"}],\"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\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"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\":\"cycleOfInterestPayment\",\"type\":\"tuple\"},{\"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\":\"cycleOfRateReset\",\"type\":\"tuple\"},{\"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\":\"cycleOfScalingIndex\",\"type\":\"tuple\"},{\"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\":\"cycleOfFee\",\"type\":\"tuple\"}],\"internalType\":\"struct PAMTerms\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"isEventScheduled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":{\"details\":\"All numbers except unix timestamp are represented as multiple of 10 ** 18\",\"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\"}},\"computeCyclicScheduleSegment((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),uint256,uint256,uint8)\":{\"params\":{\"eventType\":\"eventType of the cyclic schedule\",\"segmentEnd\":\"end timestamp of the segement\",\"segmentStart\":\"start timestamp of the segment\",\"terms\":\"terms of the contract\"},\"returns\":{\"_0\":\"event schedule segment\"}},\"computeEventTimeForEvent(bytes32,uint8,uint8,uint256)\":{\"details\":\"For optimization reasons not located in EventUtil by applying the BDC specified in the terms\"},\"computeInitialState((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)))\":{\"params\":{\"terms\":\"terms of the contract\"},\"returns\":{\"_0\":\"the initial state of the contract\"}},\"computeNextCyclicEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),uint256,uint8)\":{\"params\":{\"eventType\":\"eventType of the cyclic schedule\",\"lastScheduleTime\":\"last occurrence of cyclic event\",\"terms\":\"terms of the contract\"},\"returns\":{\"_0\":\"event schedule segment\"}},\"computeNonCyclicScheduleSegment((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),uint256,uint256)\":{\"params\":{\"segmentEnd\":\"end timestamp of the segement\",\"segmentStart\":\"start timestamp of the segment\",\"terms\":\"terms of the contract\"},\"returns\":{\"_0\":\"segment of the non-cyclic schedule\"}},\"computePayoffForEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32,bytes32)\":{\"params\":{\"_event\":\"event for which the payoff should be evaluated\",\"externalData\":\"external data needed for POF evaluation (e.g. fxRate)\",\"state\":\"current state of the contract\",\"terms\":\"terms of the contract\"},\"returns\":{\"_0\":\"the payoff of the event\"}},\"computeStateForEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32,bytes32)\":{\"params\":{\"_event\":\"event to be applied to the contract state\",\"externalData\":\"external data needed for STF evaluation (e.g. rate for RR events)\",\"state\":\"current state of the contract\",\"terms\":\"terms of the contract\"},\"returns\":{\"_0\":\"the resulting contract state\"}},\"isEventScheduled(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bool,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"returns\":{\"_0\":\"boolean indicating whether event is still scheduled\"}}},\"title\":\"PAMEngine\",\"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.\"},\"computeCyclicScheduleSegment((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),uint256,uint256,uint8)\":{\"notice\":\"Computes a schedule segment of cyclic contract events based on the contract terms and the specified timestamps.\"},\"computeEventTimeForEvent(bytes32,uint8,uint8,uint256)\":{\"notice\":\"Returns the event time for a given schedule time\"},\"computeInitialState((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)))\":{\"notice\":\"Initialize contract state space based on the contract terms.\"},\"computeNextCyclicEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),uint256,uint8)\":{\"notice\":\"Computes a schedule segment of cyclic contract events based on the contract terms and the specified timestamps.\"},\"computeNonCyclicScheduleSegment((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),uint256,uint256)\":{\"notice\":\"Computes a schedule segment of non-cyclic contract events based on the contract terms and the specified timestamps.\"},\"computePayoffForEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32,bytes32)\":{\"notice\":\"Evaluates the payoff for an event under the current state of the contract.\"},\"computeStateForEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32,bytes32)\":{\"notice\":\"Applys an event to the current state of a contract and returns the resulting contract state.\"},\"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\"},\"isEventScheduled(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bool,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"notice\":\"Verifies that the provided event is still scheduled under the terms, the current state of the contract and the current state of the underlying. param _event event for which to check if its still scheduled param terms terms of the contract param state current state of the contract param hasUnderlying boolean indicating whether the contract has an underlying contract param underlyingState state of the underlying (empty state object if non-existing)\"},\"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\":\"Inherits from BaseEngine by implementing STFs, POFs according to the ACTUS standard for a PAM contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@atpar/actus-solidity/contracts/Engines/PAM/PAMEngine.sol\":\"PAMEngine\"},\"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/IEngine.sol\":{\"keccak256\":\"0xdee7e7d2f233c108231be14130dc2dbcf8eb0374636034f75c330a4cd3e1c7cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0fe8e1c0c4d447b4b180f53574016ff852af90faa1230be5b4c81464b9b5ffc8\",\"dweb:/ipfs/QmctLgYPvacjTzNS7iJBDkXjEzdbD4GDkVnZE9FJa26oX4\"]},\"@atpar/actus-solidity/contracts/Engines/PAM/IPAMEngine.sol\":{\"keccak256\":\"0xa33328cd3ebdafc5ecc46fb2dc6cacd94f2282e45092b4719c423cd9fa7ed02a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1b2325d41367ace1e94ccf5d732440fa522899f23fe8b24f0d968b9f9e92d56d\",\"dweb:/ipfs/QmbPYatSMUZ3K8bnUKYYQtDkbg53Y6BNNFen8GJ6ZhVrfC\"]},\"@atpar/actus-solidity/contracts/Engines/PAM/PAMEngine.sol\":{\"keccak256\":\"0x9d76bfd8c77ccc67c5072e156ae1da45201732ef98bc10a3b8bbc7582ffd37a3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://520f917ecbe8da57de0a9aacafd6403392d2e021df0249b7fbb4140ae87f55b6\",\"dweb:/ipfs/Qme5vovZvPw78bC7SFr9uojHezNQGSoXUZvyqNs34eB68z\"]},\"@atpar/actus-solidity/contracts/Engines/PAM/PAMPOF.sol\":{\"keccak256\":\"0xdd5d721003e58b9b956f74189aff50cfbdac93d3d2a6e695a2266ef8d4506b6e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2c9743ed6338b6e18010a65531f9ade193f8a8d77e6c11ecb87cdcc562f9188a\",\"dweb:/ipfs/QmY8sDzEdAXySaczCy54qJ3GLTC79gLro92PhBf7ghBEdt\"]},\"@atpar/actus-solidity/contracts/Engines/PAM/PAMSTF.sol\":{\"keccak256\":\"0xc97b974a3333388921a5fc1ae09d1f7e25ca55b726c095938d276e068a21cd97\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://277583b1e2795bb26579ea19082d5ea5a60e35487fbcddca60060febd0372bb7\",\"dweb:/ipfs/QmVPmZQm5gtYMmT61pHVVz66rQm2Pk6XHHYjQ6qyKeqxXZ\"]},\"@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": "0x608060405234801561001057600080fd5b506140d4806100206000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063aaf5eb68116100ad578063e05a66e011610071578063e05a66e014610269578063e726d6801461027c578063e8d0c6721461028f578063edc0465f14610219578063f5586e05146102a257610121565b8063aaf5eb6814610211578063c40c5a9814610219578063cb2ef6f714610221578063dceda25414610236578063dd37acde1461025657610121565b80636942d1a8116100f45780636942d1a8146101a25780636f37e55b146101b557806372540003146101bd578063811322fb146101de578063931172d1146101f157610121565b8063179331f3146101265780631a2e165d1461014f5780634c7c3fd61461016f5780635ada17d81461018f575b600080fd5b610139610134366004613302565b6102b5565b6040516101469190613909565b60405180910390f35b61016261015d366004613236565b610385565b60405161014691906138ec565b61018261017d3660046133be565b6103ac565b6040516101469190613f4d565b61016261019d3660046133da565b610424565b6101826101b03660046133da565b6104f9565b610162610529565b6101d06101cb36600461321e565b610535565b604051610146929190613917565b6101626101ec366004613340565b61055e565b6102046101ff36600461349a565b610572565b604051610146919061389d565b610162610ad7565b610162610adc565b610229610ae1565b60405161014691906138f5565b610249610244366004613280565b610ae6565b60405161014691906138e1565b610162610264366004613421565b610af1565b61016261027736600461335c565b610dbf565b61016261028a366004613869565b610ddd565b61020461029d366004613464565b610f29565b6101626102b0366004613869565b61109c565b600060018460018111156102c557fe5b1415610341576102d483611107565b6102dd84611129565b14801561032c57506002826020015160058111156102f757fe5b1480610312575060038260200151600581111561031057fe5b145b8061032c575060048260200151600581111561032a57fe5b145b156103395750600161037e565b50600061037e565b600084600181111561034f57fe5b141561035d5750600061037e565b60405162461bcd60e51b815260040161037590613e5a565b60405180910390fd5b9392505050565b60008061039186610535565b9150506103a081868686610ddd565b9150505b949350505050565b6103b4612fc4565b6103bc612fc4565b60008152670de0b6b3a764000061018082018190526101608201526101a083013560208201526101e083013560608201526102c083013560e08201526102e08301356101408201526103008301356101008201526103a083013561012082015290505b919050565b600080610439610160870161014088016131e7565b6001600160a01b031614158015610484575061045d610160860161014087016131e7565b6001600160a01b0316610478610140870161012088016131e7565b6001600160a01b031614155b156104c8576104c1826104b561049f368990038901896134e6565b6104ae3689900389018961376c565b8787611138565b9063ffffffff61130616565b90506103a4565b6104f06104da368790038701876134e6565b6104e93687900387018761376c565b8585611138565b95945050505050565b610501612fc4565b6104f0610513368790038701876134e6565b6105223687900387018761376c565b85856113a4565b670de0b6b3a764000081565b6000808060f884901c601c81111561054957fe5b92505067ffffffffffffffff83169050915091565b600081601c81111561056c57fe5b92915050565b606061057c61305e565b6000600984601c81111561058c57fe5b141561069a576102408701351561069a576105a561305e565b6105e06102408901356101e08a01356105c7368c90038c016105808d016133a3565b6105d760c08d0160a08e016132e6565b60018c8c611575565b905060005b60788160ff16101561069757818160ff166078811061060057fe5b602002015161060e57610697565b886102200135828260ff166078811061062357fe5b6020020151116106325761068f565b610650828260ff166078811061064457fe5b6020020151898961175f565b6106595761068f565b6106776009838360ff166078811061066d57fe5b6020020151610dbf565b84846078811061068357fe5b60200201526001909201915b6001016105e5565b50505b600a84601c8111156106a857fe5b14156107ad57610240870135158015906106c6575061022087013515155b156107ad576106d361307d565b6106e63689900389016105808a016133a3565b6001604082015290506106f761305e565b6107206102408a01356102208b01358461071760c08e0160a08f016132e6565b60018d8d611575565b905060005b60788160ff1610156107a957818160ff166078811061074057fe5b602002015161074e576107a9565b61076c828260ff166078811061076057fe5b60200201518a8a61175f565b610775576107a1565b610789600a838360ff166078811061066d57fe5b85856078811061079557fe5b60200201526001909301925b600101610725565b5050505b600d84601c8111156107bb57fe5b141561088f576102608701351561088f576107d461305e565b61080f6102608901356101e08a01356107f6368c90038c016106008d016133a3565b61080660c08d0160a08e016132e6565b60008c8c611575565b905060005b60788160ff16101561088c57818160ff166078811061082f57fe5b602002015161083d5761088c565b61084f828260ff166078811061064457fe5b61085857610884565b61086c600d838360ff166078811061066d57fe5b84846078811061087857fe5b60200201526001909201915b600101610814565b50505b600384601c81111561089d57fe5b1415610958576102a087013515610958576108b661305e565b6108d86102a08901356101e08a01356105c7368c90038c016107008d016133a3565b905060005b60788160ff16101561095557818160ff16607881106108f857fe5b602002015161090657610955565b610918828260ff166078811061064457fe5b6109215761094d565b6109356003838360ff166078811061066d57fe5b84846078811061094157fe5b60200201526001909201915b6001016108dd565b50505b601284601c81111561096657fe5b1415610a4a57600061097e60e0890160c08a01613387565b600381111561098957fe5b1415801561099b575061028087013515155b15610a4a576109a861305e565b6109ca6102808901356101e08a01356105c7368c90038c016106808d016133a3565b905060005b60788160ff161015610a4757818160ff16607881106109ea57fe5b60200201516109f857610a47565b610a0a828260ff166078811061064457fe5b610a1357610a3f565b610a276012838360ff166078811061066d57fe5b848460788110610a3357fe5b60200201526001909201915b6001016109cf565b50505b60608167ffffffffffffffff81118015610a6357600080fd5b50604051908082528060200260200182016040528015610a8d578160200160208202803683370190505b50905060005b82811015610acb57838160788110610aa757fe5b6020020151828281518110610ab857fe5b6020908102919091010152600101610a93565b50979650505050505050565b601281565b607881565b600090565b600195945050505050565b6000600982601c811115610b0157fe5b1415610ba157610b1961060085016105e08601613202565b15156001148015610b2e575061024084013515155b15610ba1576000610b67610b4b36879003870161058088016133a3565b610b5b60c0880160a089016132e6565b8761024001358761178e565b905080610b7857506000905061037e565b8461022001358111610b8e57506000905061037e565b610b99600982610dbf565b91505061037e565b600a82601c811115610baf57fe5b1415610c3f5761024084013515801590610bcd575061022084013515155b15610c3f57610bda61307d565b610bed36869003860161058087016133a3565b6001604082015290506000610c1882610c0c60c0890160a08a016132e6565b8861024001358861178e565b905080610c2b57506000915061037e9050565b610c36600a82610dbf565b9250505061037e565b600d82601c811115610c4d57fe5b1415610cae5761026084013515610cae576000610c92610c7636879003870161060088016133a3565b610c8660c0880160a089016132e6565b8761026001358761178e565b905080610ca357506000905061037e565b610b99600d82610dbf565b600382601c811115610cbc57fe5b1415610d1d576102a084013515610d1d576000610d01610ce536879003870161070088016133a3565b610cf560c0880160a089016132e6565b876102a001358761178e565b905080610d1257506000905061037e565b610b99600382610dbf565b601282601c811115610d2b57fe5b1415610db5576000610d4360e0860160c08701613387565b6003811115610d4e57fe5b14158015610d60575061028084013515155b15610db5576000610d99610d7d36879003870161068088016133a3565b610d8d60c0880160a089016132e6565b8761028001358761178e565b905080610daa57506000905061037e565b610b99601282610dbf565b5060009392505050565b60008160f884601c811115610dd057fe5b60ff16901b179392505050565b600081851415610dee5750836103a4565b6001846008811115610dfc57fe5b1480610e1357506003846008811115610e1157fe5b145b15610e22576104c185846117e9565b6002846008811115610e3057fe5b1480610e4757506004846008811115610e4557fe5b145b15610e8b576000610e5886856117e9565b9050610e6386611845565b610e6c82611845565b1415610e795790506103a4565b610e83868561185c565b9150506103a4565b6005846008811115610e9957fe5b1480610eb057506007846008811115610eae57fe5b145b15610ebf576104c1858461185c565b6006846008811115610ecd57fe5b1480610ee457506008846008811115610ee257fe5b145b15610f20576000610ef5868561185c565b9050610f0086611845565b610f0982611845565b1415610f165790506103a4565b610e8386856117e9565b50929392505050565b6060610f3361305e565b6000610200860135158015610f535750610f53866101c00135868661175f565b15610f8157610f686002876101c00135610dbf565b828261ffff1660788110610f7857fe5b60200201526001015b61020086013515610fca57610f9c866102000135868661175f565b15610fca57610fb1600f876102000135610dbf565b828261ffff1660788110610fc157fe5b60200201526001015b610fda866101e00135868661175f565b1561100857610fef6014876101e00135610dbf565b828261ffff1660788110610fff57fe5b60200201526001015b60608161ffff1667ffffffffffffffff8111801561102557600080fd5b5060405190808252806020026020018201604052801561104f578160200160208202803683370190505b50905060005b8261ffff168110156110915783816078811061106d57fe5b602002015182828151811061107e57fe5b6020908102919091010152600101611055565b509695505050505050565b600060038460088111156110ac57fe5b14806110c3575060048460088111156110c157fe5b145b806110d9575060078460088111156110d757fe5b145b806110ef575060088460088111156110ed57fe5b145b156110fb5750836103a4565b6104f085858585610ddd565b6000808061111a62015180855b046118aa565b50915091506103a48282611940565b60006103a46201518083611114565b600080600061114685610535565b9092509050601c82601c81111561115957fe5b141561116a576000925050506103a4565b600a82601c81111561117857fe5b1415611189576000925050506103a4565b600c82601c81111561119757fe5b14156111a8576000925050506103a4565b600d82601c8111156111b657fe5b14156111c7576000925050506103a4565b601282601c8111156111d557fe5b14156111e6576000925050506103a4565b600b82601c8111156111f457fe5b1415611205576000925050506103a4565b600382601c81111561121357fe5b141561122e57611225878783876119c6565b925050506103a4565b600282601c81111561123c57fe5b141561124e5761122587878387611a80565b600982601c81111561125c57fe5b141561126e5761122587878387611abe565b600882601c81111561127c57fe5b141561128e5761122587878387611b2d565b601482601c81111561129c57fe5b14156112ae5761122587878387611b4e565b600782601c8111156112bc57fe5b14156112ce5761122587878387611b6c565b601182601c8111156112dc57fe5b14156112ee5761122587878387611c23565b60405162461bcd60e51b815260040161037590613bd8565b6000821580611313575081155b156113205750600061056c565b826000191480156113345750600160ff1b82145b156113515760405162461bcd60e51b815260040161037590613b91565b8282028284828161135e57fe5b051461137c5760405162461bcd60e51b815260040161037590613b91565b670de0b6b3a76400008105806103a45760405162461bcd60e51b815260040161037590613aaa565b6113ac612fc4565b6000806113b885610535565b9092509050601c82601c8111156113cb57fe5b14156113dd5761122587878387611cad565b600382601c8111156113eb57fe5b14156113fd5761122587878387611d4c565b600282601c81111561140b57fe5b141561141d5761122587878387611db6565b600a82601c81111561142b57fe5b141561143d5761122587878387611dfd565b600982601c81111561144b57fe5b141561145d5761122587878387611e8f565b600882601c81111561146b57fe5b141561147d5761122587878387611cad565b601482601c81111561148b57fe5b141561149d5761122587878387611ee8565b600782601c8111156114ab57fe5b14156114bd5761122587878387611cad565b600c82601c8111156114cb57fe5b14156114dd5761122587878387611f80565b600d82601c8111156114eb57fe5b14156114fd576112258787838761201c565b601282601c81111561150b57fe5b141561151d576112258787838761216d565b601182601c81111561152b57fe5b141561153d5761122587878387612270565b600b82601c81111561154b57fe5b141561155d57611225878783876122a7565b60405162461bcd60e51b815260040161037590613d1a565b61157d61305e565b61158561305e565b60608701516000906115ed5761159c8a868661175f565b156115b757898282607881106115ae57fe5b60200201526001015b6115c289868661175f565b156115e557600186151514156115e557888282607881106115df57fe5b60200201525b509050611754565b896000806115fc8a848d6102b5565b90505b8b8310156116915761161283898961175f565b1561165057607684106116375760405162461bcd60e51b815260040161037590613982565b8285856078811061164457fe5b60200201526001909301925b60019182019181600181111561166257fe5b14611677576116728b8e84612392565b61168a565b61168a6116858c8f85612392565b6124c3565b92506115ff565b600189151514156116bf576116a78c898961175f565b156116bf578b8585607881106116b957fe5b60200201525b6000841180156116dc57506116dc85600186036078811061064457fe5b1561174c5760008b6040015160018111156116f357fe5b1480156117005750600184115b801561170c5750828c14155b1561174c5784846078811061171d57fe5b602002015185600186036078811061173157fe5b602002015284846078811061174257fe5b6020020160008152505b509293505050505b979650505050505050565b6000818311156117715750600061037e565b8383111580156117815750818411155b15610db55750600161037e565b606084015160009015806117a0575081155b156117ac5750816103a4565b60016117b98585886102b5565b60018111156117c457fe5b146117da576117d585836001612392565b6104f0565b6104f061168586846001612392565b600060018260018111156117f957fe5b141561183e57611808836124fc565b600614156118225761181b83600261250f565b905061056c565b61182b836124fc565b6007141561183e5761181b83600161250f565b5090919050565b60006118546201518083611114565b509392505050565b6000600182600181111561186c57fe5b141561183e5761187b836124fc565b6006141561188e5761181b836001612524565b611897836124fc565b6007141561183e5761181b836002612524565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f846050028161190157fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b600081600114806119515750816003145b8061195c5750816005145b806119675750816007145b806119725750816008145b8061197d575081600a145b80611988575081600c145b156119955750601f61056c565b816002146119a55750601e61056c565b6119ae83612539565b6119b957601c6119bc565b601d5b60ff169392505050565b60008085610100015160018111156119da57fe5b14156119fe578461038001516119f3866040015161255e565b60000b0290506103a4565b6000611a49611a208660200151886080015189602001518a6101e0015161109c565b611a398689608001518a602001518b6101e0015161109c565b8860600151896101e00151612622565b90506103a0611a6e8660e001516104b58961038001518561130690919063ffffffff16565b6101208701519063ffffffff61271f16565b6000611a9f856104000151866102c0015161271f90919063ffffffff16565b611aac866040015161255e565b6000190260000b029050949350505050565b600080611ae1611a208660200151886080015189602001518a6101e0015161109c565b90506103a0611b1b611b098760e001516104b58961014001518661130690919063ffffffff16565b6101008801519063ffffffff61271f16565b6101608701519063ffffffff61130616565b60008360e00151611b41866040015161255e565b60000b0295945050505050565b60006104f08460e0015185610180015161130690919063ffffffff16565b600080611b8f611a208660200151886080015189602001518a6101e0015161109c565b905060018660e001516003811115611ba357fe5b1415611bc857856103c00151611bbc876040015161255e565b60000b029150506103a4565b60028660e001516003811115611bda57fe5b1415611c0d57611c008560e001516104b5886103c001518461130690919063ffffffff16565b611bbc876040015161255e565b60e0850151611c0090829063ffffffff61130616565b600080611c46611a208660200151886080015189602001518a6101e0015161109c565b9050611c92611c6b8660e001516104b58861014001518561130690919063ffffffff16565b610100870151610420890151611c869163ffffffff61271f16565b9063ffffffff61271f16565b611c9f876040015161255e565b60000b029695505050505050565b611cb5612fc4565b6000611cd7611a208660200151886080015189602001518a6101e0015161109c565b9050611d0e611cfc826104b58860e0015189610140015161130690919063ffffffff16565b6101008701519063ffffffff61271f16565b61010086015260e0850151610380870151611d3991611a6e9184916104b5919063ffffffff61130616565b6101208601525050506020820152919050565b611d54612fc4565b6000611d76611a208660200151886080015189602001518a6101e0015161109c565b9050611d9b611cfc826104b58860e0015189610140015161130690919063ffffffff16565b61010086015250506000610120840152506020820152919050565b611dbe612fc4565b846102c00151611dd1866040015161255e565b60000b0260e085015250506102e083015161014083015260208201526103009091015161010082015290565b611e05612fc4565b6000611e27611a208660200151886080015189602001518a6101e0015161109c565b9050611e60611e4f611b09836104b58960e001518a610140015161130690919063ffffffff16565b60e08701519063ffffffff61271f16565b60e086018190526000610100870152610380870151611d3991611a6e9184916104b5919063ffffffff61130616565b611e97612fc4565b6000611eb9611a208660200151886080015189602001518a6101e0015161109c565b600061010087015260e0860151610380880151919250611d3991611a6e9184916104b59163ffffffff61130616565b611ef0612fc4565b6000611f12611a208660200151886080015189602001518a6101e0015161109c565b9050611f37611cfc826104b58860e0015189610140015161130690919063ffffffff16565b61010086015260e0850151610380870151611f6291611a6e9184916104b5919063ffffffff61130616565b6101208601525050600060e084015250600482526020820152919050565b611f88612fc4565b6000611faa611a208660200151886080015189602001518a6101e0015161109c565b9050611fcf611cfc826104b58860e0015189610140015161130690919063ffffffff16565b61010086015260e0850151610380870151611ffa91611a6e9184916104b5919063ffffffff61130616565b6101208601525050506103609290920151610140820152602081019190915290565b612024612fc4565b61034085015161032086015160009161204891611c8690869063ffffffff61130616565b905060006120648661014001518361276590919063ffffffff16565b9050612093876104800151612087896104a00151846127ab90919063ffffffff16565b9063ffffffff6127bb16565b6101408701519091506120ac908263ffffffff61271f16565b91506120cf876104400151612087896104600151856127ab90919063ffffffff16565b9150600061211c6120f388602001518a608001518b602001518c6101e0015161109c565b61210c888b608001518c602001518d6101e0015161109c565b8a606001518b6101e00151612622565b9050612153612141826104b58a60e001518b610140015161130690919063ffffffff16565b6101008901519063ffffffff61271f16565b610100880152505061014085015250506020820152919050565b612175612fc4565b6000612197611a208660200151886080015189602001518a6101e0015161109c565b90506121bc611cfc826104b58860e0015189610140015161130690919063ffffffff16565b61010086015260e08501516103808701516121e791611a6e9184916104b5919063ffffffff61130616565b61012086015260018660c0015160038111156121ff57fe5b148061221a575060038660c00151600381111561221857fe5b145b156122285760006101608601525b60028660c00151600381111561223a57fe5b1480612255575060038660c00151600381111561225357fe5b145b156122635760006101808601525b5050506020820152919050565b612278612fc4565b5050600060e0830181905261014083018190526101008301819052610120830152600582526020820152919050565b6122af612fc4565b600084604001516000146122c75784604001516122e0565b6122e08487608001518860200151896101e00151610ddd565b6104c08701516040015190915083906000901561231b576000612308896104c00151856127cb565b905080831161231957600180895291505b505b876104e0015160400151801561232f575080155b1561235e576000612345896104e00151856127cb565b9050808311612357576002885261235c565b600388525b505b6040870151612386576123808689608001518a602001518b6101e00151610ddd565b60408801525b50949695505050505050565b60008080856020015160058111156123a657fe5b14156123c15784516104c1908590850263ffffffff61250f16565b6001856020015160058111156123d357fe5b14156123f15784516104c1908590850260070263ffffffff61250f16565b60028560200151600581111561240357fe5b141561241e5784516104c1908590850263ffffffff6128f716565b60038560200151600581111561243057fe5b141561244e5784516104c1908590850260030263ffffffff6128f716565b60048560200151600581111561246057fe5b141561247e5784516104c1908590850260060263ffffffff6128f716565b60058560200151600581111561249057fe5b14156124ab5784516104c1908590850263ffffffff61297116565b60405162461bcd60e51b8152600401610375906139d0565b6000806000806124d285612998565b9194509250905060006124e58484611940565b90506124f28484836129b6565b9695505050505050565b6007620151809091046003010660010190565b62015180810282018281101561056c57600080fd5b62015180810282038281111561056c57600080fd5b60006004820615801561254e57506064820615155b8061056c57505061019090061590565b60008082600c81111561256d57fe5b141561257b5750600161041f565b600182600c81111561258957fe5b1415612598575060001961041f565b600682600c8111156125a657fe5b14156125b45750600161041f565b600782600c8111156125c257fe5b14156125d1575060001961041f565b600282600c8111156125df57fe5b14156125ed5750600161041f565b600382600c8111156125fb57fe5b141561260a575060001961041f565b60405162461bcd60e51b815260040161037590613b3d565b6000848410156126445760405162461bcd60e51b815260040161037590613cd3565b600083600581111561265257fe5b1415612662576104c185856129d0565b600183600581111561267057fe5b1415612680576104c18585612ae4565b600283600581111561268e57fe5b141561269e576104c18585612b0f565b60048360058111156126ac57fe5b14156126bc576104c18585612b2e565b60038360058111156126ca57fe5b14156126db576104c1858584612bef565b60058360058111156126e957fe5b14156127075760405162461bcd60e51b815260040161037590613c25565b60405162461bcd60e51b815260040161037590613a1e565b60008282018183128015906127345750838112155b80612749575060008312801561274957508381125b61037e5760405162461bcd60e51b815260040161037590613afc565b600081830381831280159061277a5750838113155b8061278f575060008312801561278f57508381135b61037e5760405162461bcd60e51b815260040161037590613ec5565b60008183121561183e5750919050565b60008183131561183e578161037e565b60008080846020015160058111156127df57fe5b14156127ff5783516127f890849063ffffffff61250f16565b905061037e565b60018460200151600581111561281157fe5b141561282d5783516127f890849060070263ffffffff61250f16565b60028460200151600581111561283f57fe5b14156128585783516127f890849063ffffffff6128f716565b60038460200151600581111561286a57fe5b14156128865783516127f890849060030263ffffffff6128f716565b60048460200151600581111561289857fe5b14156128b45783516127f890849060060263ffffffff6128f716565b6005846020015160058111156128c657fe5b14156128df5783516127f890849063ffffffff61297116565b60405162461bcd60e51b815260040161037590613dfd565b60008080806129096201518087611114565b600c9188016000198101838104949094019650945092509006600101915060006129338484611940565b905080821115612941578091505b62015180870662015180612956868686612cc5565b020194508685101561296757600080fd5b5050505092915050565b60008080806129836201518087611114565b91870194509250905060006129338484611940565b600080806129a96201518085611114565b9196909550909350915050565b6000620151806129c7858585612cc5565b02949350505050565b6000806129dc84612d41565b905060006129e984612d41565b905060006129f686612d59565b612a025761016d612a06565b61016e5b61ffff16905081831415612a3857612a2e81612a228888612d76565b9063ffffffff612d9116565b935050505061056c565b6000612a4386612d59565b612a4f5761016d612a53565b61016e5b61ffff1690506000612a8483612a228a612a7f612a778a600163ffffffff612e4d16565b6001806129b6565b612d76565b90506000612aa183612a22612a9b886001806129b6565b8b612d76565b9050612ad7612ac76001612abb888a63ffffffff612e7216565b9063ffffffff612e7216565b611c86848463ffffffff61271f16565b9998505050505050505050565b600061037e610168612a2262015180612b03868863ffffffff612e7216565b9063ffffffff612eb416565b600061037e61016d612a2262015180612b03868863ffffffff612e7216565b6000806000806000806000612b4289612998565b975095509350612b5188612998565b945092509050601f861415612b6557601e95505b82601f1415612b7357601e92505b6000612b85848863ffffffff61276516565b90506000612b99848863ffffffff61276516565b90506000612bad848863ffffffff61276516565b9050612bdf610168612a2285611c86612bcd87601e63ffffffff612ef616565b611c868761016863ffffffff612ef616565b9c9b505050505050505050505050565b6000806000806000806000612c038a612998565b975095509350612c1289612998565b945092509050612c218a611107565b861415612c2d57601e95505b8789148015612c3c5750816002145b158015612c505750612c4d89611107565b83145b15612c5a57601e92505b6000612c6c848863ffffffff61276516565b90506000612c80848863ffffffff61276516565b90506000612c94848863ffffffff61276516565b9050612cb4610168612a2285611c86612bcd87601e63ffffffff612ef616565b9d9c50505050505050505050505050565b60006107b2841015612cd657600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f0281612d1257fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b6000612d506201518083611114565b50909392505050565b600080612d696201518084611114565b5050905061037e81612539565b600081831115612d8557600080fd5b50620151809190030490565b600081612db05760405162461bcd60e51b815260040161037590613f09565b82612dbd5750600061056c565b670de0b6b3a764000083810290848281612dd357fe5b0514612df15760405162461bcd60e51b815260040161037590613db7565b82600019148015612e055750600160ff1b84145b15612e225760405162461bcd60e51b815260040161037590613db7565b6000838281612e2d57fe5b059050806103a45760405162461bcd60e51b815260040161037590613c82565b60008282018381101561037e5760405162461bcd60e51b815260040161037590613a73565b600061037e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612f61565b600061037e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f8d565b600082612f055750600061056c565b82600019148015612f195750600160ff1b82145b15612f365760405162461bcd60e51b815260040161037590613d70565b82820282848281612f4357fe5b051461037e5760405162461bcd60e51b815260040161037590613d70565b60008184841115612f855760405162461bcd60e51b8152600401610375919061392f565b505050900390565b60008183612fae5760405162461bcd60e51b8152600401610375919061392f565b506000838581612fba57fe5b0495945050505050565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610f0001604052806078906020820280368337509192915050565b604080516080810190915260008082526020820190815260200160008152600060209091015290565b80356001600160a01b038116811461056c57600080fd5b80356009811061056c57600080fd5b803561056c8161406a565b803561056c81614077565b8035600d811061056c57600080fd5b80356013811061056c57600080fd5b803561056c81614091565b60006080828403121561311c578081fd5b6131266080614032565b905081358152602082013561313a81614077565b6020820152604082013561314d8161406a565b6040820152606082013561316081614059565b606082015292915050565b60006060828403121561317c578081fd5b6131866060614032565b905081358152602082013561319a81614077565b6020820152604082013580151581146131b257600080fd5b604082015292915050565b600061078082840312156131cf578081fd5b50919050565b600061028082840312156131cf578081fd5b6000602082840312156131f8578081fd5b61037e83836130a6565b600060208284031215613213578081fd5b813561037e81614059565b60006020828403121561322f578081fd5b5035919050565b6000806000806080858703121561324b578283fd5b84359350602085013560098110613260578384fd5b925060408501356132708161406a565b9396929550929360600135925050565b6000806000806000610cc08688031215613298578283fd5b853594506132a987602088016131bd565b93506132b9876107a088016131d5565b9250610a208601356132ca81614059565b91506132da87610a4088016131d5565b90509295509295909350565b6000602082840312156132f7578081fd5b813561037e8161406a565b600080600060c08486031215613316578081fd5b83356133218161406a565b925060208401359150613337856040860161310b565b90509250925092565b600060208284031215613351578081fd5b813561037e81614084565b6000806040838503121561336e578182fd5b823561337981614084565b946020939093013593505050565b600060208284031215613398578081fd5b813561037e81614091565b6000608082840312156133b4578081fd5b61037e838361310b565b600061078082840312156133d0578081fd5b61037e83836131bd565b600080600080610a4085870312156133f0578182fd5b6133fa86866131bd565b935061340a8661078087016131d5565b9396939550505050610a0082013591610a20013590565b60008060006107c08486031215613436578081fd5b61344085856131bd565b925061078084013591506107a084013561345981614084565b809150509250925092565b60008060006107c08486031215613479578081fd5b61348385856131bd565b9561078085013595506107a0909401359392505050565b6000806000806107e085870312156134b0578182fd5b6134ba86866131bd565b935061078085013592506107a085013591506107c08501356134db81614084565b939692955090935050565b600061078082840312156134f8578081fd5b61058061350481614032565b61350e85856130f1565b815261351d85602086016130cc565b602082015261352f85604086016130e2565b604082015261354185606086016130d7565b606082015261355385608086016130bd565b60808201526135658560a086016130cc565b60a08201526135778560c08601613100565b60c08201526135898560e08601613100565b60e082015261010061359d868287016130cc565b908201526101206135b0868683016130a6565b908201526101406135c3868683016130a6565b90820152610160848101359082015261018080850135908201526101a080850135908201526101c080850135908201526101e08085013590820152610200808501359082015261022080850135908201526102408085013590820152610260808501359082015261028080850135908201526102a080850135908201526102c080850135908201526102e08085013590820152610300808501359082015261032080850135908201526103408085013590820152610360808501359082015261038080850135908201526103a080850135908201526103c080850135908201526103e08085013590820152610400808501359082015261042080850135908201526104408085013590820152610460808501359082015261048080850135908201526104a080850135908201526104c06136ff8682870161316b565b908201526105206137128686830161316b565b6104e08301526137248684870161310b565b61050083015261373886610600870161310b565b9082015261374a85610680860161310b565b61054082015261375e85610700860161310b565b610560820152949350505050565b600061028080838503121561377f578182fd5b61378881614032565b61379285856130d7565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b6000806000806080858703121561387e578182fd5b8435935061326086602087016130bd565b6006811061389957fe5b9052565b6020808252825182820181905260009190848201906040850190845b818110156138d5578351835292840192918401916001016138b9565b50909695505050505050565b901515815260200190565b90815260200190565b602081016013831061390357fe5b91905290565b602081016002831061390357fe5b60408101601d841061392557fe5b9281526020015290565b6000602080835283518082850152825b8181101561395b5785810183015185820160400152820161393f565b8181111561396c5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602e908201527f5363686564756c652e636f6d70757465446174657346726f6d4379636c653a2060408201526d4d41585f4359434c455f53495a4560901b606082015260800190565b6020808252602e908201527f5363686564756c652e6765744e6578744379636c65446174653a20415454524960408201526d1095551157d393d517d193d5539160921b606082015260800190565b60208082526035908201527f446179436f756e74436f6e76656e74696f6e2e796561724672616374696f6e3a6040820152741020aa2a2924a12aaa22afa727aa2fa327aaa7221760591b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526032908201527f5369676e65644d6174682e666c6f61744d756c743a2043414e4e4f545f524550604082015271524553454e545f4752414e554c415249545960701b606082015260800190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526034908201527f436f6e7472616374526f6c65436f6e76656e74696f6e2e726f6c655369676e3a6040820152730810551514925095551157d393d517d193d5539160621b606082015260800190565b60208082526027908201527f5369676e65644d6174682e666c6f61744d756c743a204f564552464c4f575f4460408201526611551150d5115160ca1b606082015260800190565b6020808252602d908201527f50414d456e67696e652e7061796f666646756e6374696f6e3a2041545452494260408201526c15551157d393d517d193d55391609a1b606082015260800190565b60208082526039908201527f446179436f756e74436f6e76656e74696f6e2e796561724672616374696f6e3a60408201527f204154545249425554455f4e4f545f535550504f525445442e00000000000000606082015260800190565b60208082526031908201527f5369676e65644d6174682e666c6f61744469763a2043414e4e4f545f524550526040820152704553454e545f4752414e554c415249545960781b606082015260800190565b60208082526027908201527f436f72652e796561724672616374696f6e3a2053544152545f4e4f545f42454660408201526613d49157d1539160ca1b606082015260800190565b60208082526036908201527f50414d456e67696e652e73746174655472616e736974696f6e46756e6374696f6040820152751b8e8810551514925095551157d393d517d193d5539160521b606082015260800190565b60208082526027908201527f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f604082015266766572666c6f7760c81b606082015260800190565b60208082526026908201527f5369676e65644d6174682e666c6f61744469763a204f564552464c4f575f4445604082015265151150d5115160d21b606082015260800190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526045908201527f456e644f664d6f6e7468436f6e76656e74696f6e2e61646a757374456e644f6660408201527f4d6f6e7468436f6e76656e74696f6e3a204154545249425554455f4e4f545f4660608201526427aaa7221760d91b608082015260a00190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b60208082526024908201527f5369676e65644d6174682e666c6f61744469763a20444956494445445f42595f6040820152635a45524f60e01b606082015260800190565b600061028082019050613f6182845161388f565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60405181810167ffffffffffffffff8111828210171561405157600080fd5b604052919050565b801515811461406757600080fd5b50565b6002811061406757600080fd5b6006811061406757600080fd5b601d811061406757600080fd5b6004811061406757600080fdfea2646970667358221220fbd1f85e87ae8950e32f10e7533bb5e4a21a2781f675ff255ab07b5b658b475a64736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063aaf5eb68116100ad578063e05a66e011610071578063e05a66e014610269578063e726d6801461027c578063e8d0c6721461028f578063edc0465f14610219578063f5586e05146102a257610121565b8063aaf5eb6814610211578063c40c5a9814610219578063cb2ef6f714610221578063dceda25414610236578063dd37acde1461025657610121565b80636942d1a8116100f45780636942d1a8146101a25780636f37e55b146101b557806372540003146101bd578063811322fb146101de578063931172d1146101f157610121565b8063179331f3146101265780631a2e165d1461014f5780634c7c3fd61461016f5780635ada17d81461018f575b600080fd5b610139610134366004613302565b6102b5565b6040516101469190613909565b60405180910390f35b61016261015d366004613236565b610385565b60405161014691906138ec565b61018261017d3660046133be565b6103ac565b6040516101469190613f4d565b61016261019d3660046133da565b610424565b6101826101b03660046133da565b6104f9565b610162610529565b6101d06101cb36600461321e565b610535565b604051610146929190613917565b6101626101ec366004613340565b61055e565b6102046101ff36600461349a565b610572565b604051610146919061389d565b610162610ad7565b610162610adc565b610229610ae1565b60405161014691906138f5565b610249610244366004613280565b610ae6565b60405161014691906138e1565b610162610264366004613421565b610af1565b61016261027736600461335c565b610dbf565b61016261028a366004613869565b610ddd565b61020461029d366004613464565b610f29565b6101626102b0366004613869565b61109c565b600060018460018111156102c557fe5b1415610341576102d483611107565b6102dd84611129565b14801561032c57506002826020015160058111156102f757fe5b1480610312575060038260200151600581111561031057fe5b145b8061032c575060048260200151600581111561032a57fe5b145b156103395750600161037e565b50600061037e565b600084600181111561034f57fe5b141561035d5750600061037e565b60405162461bcd60e51b815260040161037590613e5a565b60405180910390fd5b9392505050565b60008061039186610535565b9150506103a081868686610ddd565b9150505b949350505050565b6103b4612fc4565b6103bc612fc4565b60008152670de0b6b3a764000061018082018190526101608201526101a083013560208201526101e083013560608201526102c083013560e08201526102e08301356101408201526103008301356101008201526103a083013561012082015290505b919050565b600080610439610160870161014088016131e7565b6001600160a01b031614158015610484575061045d610160860161014087016131e7565b6001600160a01b0316610478610140870161012088016131e7565b6001600160a01b031614155b156104c8576104c1826104b561049f368990038901896134e6565b6104ae3689900389018961376c565b8787611138565b9063ffffffff61130616565b90506103a4565b6104f06104da368790038701876134e6565b6104e93687900387018761376c565b8585611138565b95945050505050565b610501612fc4565b6104f0610513368790038701876134e6565b6105223687900387018761376c565b85856113a4565b670de0b6b3a764000081565b6000808060f884901c601c81111561054957fe5b92505067ffffffffffffffff83169050915091565b600081601c81111561056c57fe5b92915050565b606061057c61305e565b6000600984601c81111561058c57fe5b141561069a576102408701351561069a576105a561305e565b6105e06102408901356101e08a01356105c7368c90038c016105808d016133a3565b6105d760c08d0160a08e016132e6565b60018c8c611575565b905060005b60788160ff16101561069757818160ff166078811061060057fe5b602002015161060e57610697565b886102200135828260ff166078811061062357fe5b6020020151116106325761068f565b610650828260ff166078811061064457fe5b6020020151898961175f565b6106595761068f565b6106776009838360ff166078811061066d57fe5b6020020151610dbf565b84846078811061068357fe5b60200201526001909201915b6001016105e5565b50505b600a84601c8111156106a857fe5b14156107ad57610240870135158015906106c6575061022087013515155b156107ad576106d361307d565b6106e63689900389016105808a016133a3565b6001604082015290506106f761305e565b6107206102408a01356102208b01358461071760c08e0160a08f016132e6565b60018d8d611575565b905060005b60788160ff1610156107a957818160ff166078811061074057fe5b602002015161074e576107a9565b61076c828260ff166078811061076057fe5b60200201518a8a61175f565b610775576107a1565b610789600a838360ff166078811061066d57fe5b85856078811061079557fe5b60200201526001909301925b600101610725565b5050505b600d84601c8111156107bb57fe5b141561088f576102608701351561088f576107d461305e565b61080f6102608901356101e08a01356107f6368c90038c016106008d016133a3565b61080660c08d0160a08e016132e6565b60008c8c611575565b905060005b60788160ff16101561088c57818160ff166078811061082f57fe5b602002015161083d5761088c565b61084f828260ff166078811061064457fe5b61085857610884565b61086c600d838360ff166078811061066d57fe5b84846078811061087857fe5b60200201526001909201915b600101610814565b50505b600384601c81111561089d57fe5b1415610958576102a087013515610958576108b661305e565b6108d86102a08901356101e08a01356105c7368c90038c016107008d016133a3565b905060005b60788160ff16101561095557818160ff16607881106108f857fe5b602002015161090657610955565b610918828260ff166078811061064457fe5b6109215761094d565b6109356003838360ff166078811061066d57fe5b84846078811061094157fe5b60200201526001909201915b6001016108dd565b50505b601284601c81111561096657fe5b1415610a4a57600061097e60e0890160c08a01613387565b600381111561098957fe5b1415801561099b575061028087013515155b15610a4a576109a861305e565b6109ca6102808901356101e08a01356105c7368c90038c016106808d016133a3565b905060005b60788160ff161015610a4757818160ff16607881106109ea57fe5b60200201516109f857610a47565b610a0a828260ff166078811061064457fe5b610a1357610a3f565b610a276012838360ff166078811061066d57fe5b848460788110610a3357fe5b60200201526001909201915b6001016109cf565b50505b60608167ffffffffffffffff81118015610a6357600080fd5b50604051908082528060200260200182016040528015610a8d578160200160208202803683370190505b50905060005b82811015610acb57838160788110610aa757fe5b6020020151828281518110610ab857fe5b6020908102919091010152600101610a93565b50979650505050505050565b601281565b607881565b600090565b600195945050505050565b6000600982601c811115610b0157fe5b1415610ba157610b1961060085016105e08601613202565b15156001148015610b2e575061024084013515155b15610ba1576000610b67610b4b36879003870161058088016133a3565b610b5b60c0880160a089016132e6565b8761024001358761178e565b905080610b7857506000905061037e565b8461022001358111610b8e57506000905061037e565b610b99600982610dbf565b91505061037e565b600a82601c811115610baf57fe5b1415610c3f5761024084013515801590610bcd575061022084013515155b15610c3f57610bda61307d565b610bed36869003860161058087016133a3565b6001604082015290506000610c1882610c0c60c0890160a08a016132e6565b8861024001358861178e565b905080610c2b57506000915061037e9050565b610c36600a82610dbf565b9250505061037e565b600d82601c811115610c4d57fe5b1415610cae5761026084013515610cae576000610c92610c7636879003870161060088016133a3565b610c8660c0880160a089016132e6565b8761026001358761178e565b905080610ca357506000905061037e565b610b99600d82610dbf565b600382601c811115610cbc57fe5b1415610d1d576102a084013515610d1d576000610d01610ce536879003870161070088016133a3565b610cf560c0880160a089016132e6565b876102a001358761178e565b905080610d1257506000905061037e565b610b99600382610dbf565b601282601c811115610d2b57fe5b1415610db5576000610d4360e0860160c08701613387565b6003811115610d4e57fe5b14158015610d60575061028084013515155b15610db5576000610d99610d7d36879003870161068088016133a3565b610d8d60c0880160a089016132e6565b8761028001358761178e565b905080610daa57506000905061037e565b610b99601282610dbf565b5060009392505050565b60008160f884601c811115610dd057fe5b60ff16901b179392505050565b600081851415610dee5750836103a4565b6001846008811115610dfc57fe5b1480610e1357506003846008811115610e1157fe5b145b15610e22576104c185846117e9565b6002846008811115610e3057fe5b1480610e4757506004846008811115610e4557fe5b145b15610e8b576000610e5886856117e9565b9050610e6386611845565b610e6c82611845565b1415610e795790506103a4565b610e83868561185c565b9150506103a4565b6005846008811115610e9957fe5b1480610eb057506007846008811115610eae57fe5b145b15610ebf576104c1858461185c565b6006846008811115610ecd57fe5b1480610ee457506008846008811115610ee257fe5b145b15610f20576000610ef5868561185c565b9050610f0086611845565b610f0982611845565b1415610f165790506103a4565b610e8386856117e9565b50929392505050565b6060610f3361305e565b6000610200860135158015610f535750610f53866101c00135868661175f565b15610f8157610f686002876101c00135610dbf565b828261ffff1660788110610f7857fe5b60200201526001015b61020086013515610fca57610f9c866102000135868661175f565b15610fca57610fb1600f876102000135610dbf565b828261ffff1660788110610fc157fe5b60200201526001015b610fda866101e00135868661175f565b1561100857610fef6014876101e00135610dbf565b828261ffff1660788110610fff57fe5b60200201526001015b60608161ffff1667ffffffffffffffff8111801561102557600080fd5b5060405190808252806020026020018201604052801561104f578160200160208202803683370190505b50905060005b8261ffff168110156110915783816078811061106d57fe5b602002015182828151811061107e57fe5b6020908102919091010152600101611055565b509695505050505050565b600060038460088111156110ac57fe5b14806110c3575060048460088111156110c157fe5b145b806110d9575060078460088111156110d757fe5b145b806110ef575060088460088111156110ed57fe5b145b156110fb5750836103a4565b6104f085858585610ddd565b6000808061111a62015180855b046118aa565b50915091506103a48282611940565b60006103a46201518083611114565b600080600061114685610535565b9092509050601c82601c81111561115957fe5b141561116a576000925050506103a4565b600a82601c81111561117857fe5b1415611189576000925050506103a4565b600c82601c81111561119757fe5b14156111a8576000925050506103a4565b600d82601c8111156111b657fe5b14156111c7576000925050506103a4565b601282601c8111156111d557fe5b14156111e6576000925050506103a4565b600b82601c8111156111f457fe5b1415611205576000925050506103a4565b600382601c81111561121357fe5b141561122e57611225878783876119c6565b925050506103a4565b600282601c81111561123c57fe5b141561124e5761122587878387611a80565b600982601c81111561125c57fe5b141561126e5761122587878387611abe565b600882601c81111561127c57fe5b141561128e5761122587878387611b2d565b601482601c81111561129c57fe5b14156112ae5761122587878387611b4e565b600782601c8111156112bc57fe5b14156112ce5761122587878387611b6c565b601182601c8111156112dc57fe5b14156112ee5761122587878387611c23565b60405162461bcd60e51b815260040161037590613bd8565b6000821580611313575081155b156113205750600061056c565b826000191480156113345750600160ff1b82145b156113515760405162461bcd60e51b815260040161037590613b91565b8282028284828161135e57fe5b051461137c5760405162461bcd60e51b815260040161037590613b91565b670de0b6b3a76400008105806103a45760405162461bcd60e51b815260040161037590613aaa565b6113ac612fc4565b6000806113b885610535565b9092509050601c82601c8111156113cb57fe5b14156113dd5761122587878387611cad565b600382601c8111156113eb57fe5b14156113fd5761122587878387611d4c565b600282601c81111561140b57fe5b141561141d5761122587878387611db6565b600a82601c81111561142b57fe5b141561143d5761122587878387611dfd565b600982601c81111561144b57fe5b141561145d5761122587878387611e8f565b600882601c81111561146b57fe5b141561147d5761122587878387611cad565b601482601c81111561148b57fe5b141561149d5761122587878387611ee8565b600782601c8111156114ab57fe5b14156114bd5761122587878387611cad565b600c82601c8111156114cb57fe5b14156114dd5761122587878387611f80565b600d82601c8111156114eb57fe5b14156114fd576112258787838761201c565b601282601c81111561150b57fe5b141561151d576112258787838761216d565b601182601c81111561152b57fe5b141561153d5761122587878387612270565b600b82601c81111561154b57fe5b141561155d57611225878783876122a7565b60405162461bcd60e51b815260040161037590613d1a565b61157d61305e565b61158561305e565b60608701516000906115ed5761159c8a868661175f565b156115b757898282607881106115ae57fe5b60200201526001015b6115c289868661175f565b156115e557600186151514156115e557888282607881106115df57fe5b60200201525b509050611754565b896000806115fc8a848d6102b5565b90505b8b8310156116915761161283898961175f565b1561165057607684106116375760405162461bcd60e51b815260040161037590613982565b8285856078811061164457fe5b60200201526001909301925b60019182019181600181111561166257fe5b14611677576116728b8e84612392565b61168a565b61168a6116858c8f85612392565b6124c3565b92506115ff565b600189151514156116bf576116a78c898961175f565b156116bf578b8585607881106116b957fe5b60200201525b6000841180156116dc57506116dc85600186036078811061064457fe5b1561174c5760008b6040015160018111156116f357fe5b1480156117005750600184115b801561170c5750828c14155b1561174c5784846078811061171d57fe5b602002015185600186036078811061173157fe5b602002015284846078811061174257fe5b6020020160008152505b509293505050505b979650505050505050565b6000818311156117715750600061037e565b8383111580156117815750818411155b15610db55750600161037e565b606084015160009015806117a0575081155b156117ac5750816103a4565b60016117b98585886102b5565b60018111156117c457fe5b146117da576117d585836001612392565b6104f0565b6104f061168586846001612392565b600060018260018111156117f957fe5b141561183e57611808836124fc565b600614156118225761181b83600261250f565b905061056c565b61182b836124fc565b6007141561183e5761181b83600161250f565b5090919050565b60006118546201518083611114565b509392505050565b6000600182600181111561186c57fe5b141561183e5761187b836124fc565b6006141561188e5761181b836001612524565b611897836124fc565b6007141561183e5761181b836002612524565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f846050028161190157fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b600081600114806119515750816003145b8061195c5750816005145b806119675750816007145b806119725750816008145b8061197d575081600a145b80611988575081600c145b156119955750601f61056c565b816002146119a55750601e61056c565b6119ae83612539565b6119b957601c6119bc565b601d5b60ff169392505050565b60008085610100015160018111156119da57fe5b14156119fe578461038001516119f3866040015161255e565b60000b0290506103a4565b6000611a49611a208660200151886080015189602001518a6101e0015161109c565b611a398689608001518a602001518b6101e0015161109c565b8860600151896101e00151612622565b90506103a0611a6e8660e001516104b58961038001518561130690919063ffffffff16565b6101208701519063ffffffff61271f16565b6000611a9f856104000151866102c0015161271f90919063ffffffff16565b611aac866040015161255e565b6000190260000b029050949350505050565b600080611ae1611a208660200151886080015189602001518a6101e0015161109c565b90506103a0611b1b611b098760e001516104b58961014001518661130690919063ffffffff16565b6101008801519063ffffffff61271f16565b6101608701519063ffffffff61130616565b60008360e00151611b41866040015161255e565b60000b0295945050505050565b60006104f08460e0015185610180015161130690919063ffffffff16565b600080611b8f611a208660200151886080015189602001518a6101e0015161109c565b905060018660e001516003811115611ba357fe5b1415611bc857856103c00151611bbc876040015161255e565b60000b029150506103a4565b60028660e001516003811115611bda57fe5b1415611c0d57611c008560e001516104b5886103c001518461130690919063ffffffff16565b611bbc876040015161255e565b60e0850151611c0090829063ffffffff61130616565b600080611c46611a208660200151886080015189602001518a6101e0015161109c565b9050611c92611c6b8660e001516104b58861014001518561130690919063ffffffff16565b610100870151610420890151611c869163ffffffff61271f16565b9063ffffffff61271f16565b611c9f876040015161255e565b60000b029695505050505050565b611cb5612fc4565b6000611cd7611a208660200151886080015189602001518a6101e0015161109c565b9050611d0e611cfc826104b58860e0015189610140015161130690919063ffffffff16565b6101008701519063ffffffff61271f16565b61010086015260e0850151610380870151611d3991611a6e9184916104b5919063ffffffff61130616565b6101208601525050506020820152919050565b611d54612fc4565b6000611d76611a208660200151886080015189602001518a6101e0015161109c565b9050611d9b611cfc826104b58860e0015189610140015161130690919063ffffffff16565b61010086015250506000610120840152506020820152919050565b611dbe612fc4565b846102c00151611dd1866040015161255e565b60000b0260e085015250506102e083015161014083015260208201526103009091015161010082015290565b611e05612fc4565b6000611e27611a208660200151886080015189602001518a6101e0015161109c565b9050611e60611e4f611b09836104b58960e001518a610140015161130690919063ffffffff16565b60e08701519063ffffffff61271f16565b60e086018190526000610100870152610380870151611d3991611a6e9184916104b5919063ffffffff61130616565b611e97612fc4565b6000611eb9611a208660200151886080015189602001518a6101e0015161109c565b600061010087015260e0860151610380880151919250611d3991611a6e9184916104b59163ffffffff61130616565b611ef0612fc4565b6000611f12611a208660200151886080015189602001518a6101e0015161109c565b9050611f37611cfc826104b58860e0015189610140015161130690919063ffffffff16565b61010086015260e0850151610380870151611f6291611a6e9184916104b5919063ffffffff61130616565b6101208601525050600060e084015250600482526020820152919050565b611f88612fc4565b6000611faa611a208660200151886080015189602001518a6101e0015161109c565b9050611fcf611cfc826104b58860e0015189610140015161130690919063ffffffff16565b61010086015260e0850151610380870151611ffa91611a6e9184916104b5919063ffffffff61130616565b6101208601525050506103609290920151610140820152602081019190915290565b612024612fc4565b61034085015161032086015160009161204891611c8690869063ffffffff61130616565b905060006120648661014001518361276590919063ffffffff16565b9050612093876104800151612087896104a00151846127ab90919063ffffffff16565b9063ffffffff6127bb16565b6101408701519091506120ac908263ffffffff61271f16565b91506120cf876104400151612087896104600151856127ab90919063ffffffff16565b9150600061211c6120f388602001518a608001518b602001518c6101e0015161109c565b61210c888b608001518c602001518d6101e0015161109c565b8a606001518b6101e00151612622565b9050612153612141826104b58a60e001518b610140015161130690919063ffffffff16565b6101008901519063ffffffff61271f16565b610100880152505061014085015250506020820152919050565b612175612fc4565b6000612197611a208660200151886080015189602001518a6101e0015161109c565b90506121bc611cfc826104b58860e0015189610140015161130690919063ffffffff16565b61010086015260e08501516103808701516121e791611a6e9184916104b5919063ffffffff61130616565b61012086015260018660c0015160038111156121ff57fe5b148061221a575060038660c00151600381111561221857fe5b145b156122285760006101608601525b60028660c00151600381111561223a57fe5b1480612255575060038660c00151600381111561225357fe5b145b156122635760006101808601525b5050506020820152919050565b612278612fc4565b5050600060e0830181905261014083018190526101008301819052610120830152600582526020820152919050565b6122af612fc4565b600084604001516000146122c75784604001516122e0565b6122e08487608001518860200151896101e00151610ddd565b6104c08701516040015190915083906000901561231b576000612308896104c00151856127cb565b905080831161231957600180895291505b505b876104e0015160400151801561232f575080155b1561235e576000612345896104e00151856127cb565b9050808311612357576002885261235c565b600388525b505b6040870151612386576123808689608001518a602001518b6101e00151610ddd565b60408801525b50949695505050505050565b60008080856020015160058111156123a657fe5b14156123c15784516104c1908590850263ffffffff61250f16565b6001856020015160058111156123d357fe5b14156123f15784516104c1908590850260070263ffffffff61250f16565b60028560200151600581111561240357fe5b141561241e5784516104c1908590850263ffffffff6128f716565b60038560200151600581111561243057fe5b141561244e5784516104c1908590850260030263ffffffff6128f716565b60048560200151600581111561246057fe5b141561247e5784516104c1908590850260060263ffffffff6128f716565b60058560200151600581111561249057fe5b14156124ab5784516104c1908590850263ffffffff61297116565b60405162461bcd60e51b8152600401610375906139d0565b6000806000806124d285612998565b9194509250905060006124e58484611940565b90506124f28484836129b6565b9695505050505050565b6007620151809091046003010660010190565b62015180810282018281101561056c57600080fd5b62015180810282038281111561056c57600080fd5b60006004820615801561254e57506064820615155b8061056c57505061019090061590565b60008082600c81111561256d57fe5b141561257b5750600161041f565b600182600c81111561258957fe5b1415612598575060001961041f565b600682600c8111156125a657fe5b14156125b45750600161041f565b600782600c8111156125c257fe5b14156125d1575060001961041f565b600282600c8111156125df57fe5b14156125ed5750600161041f565b600382600c8111156125fb57fe5b141561260a575060001961041f565b60405162461bcd60e51b815260040161037590613b3d565b6000848410156126445760405162461bcd60e51b815260040161037590613cd3565b600083600581111561265257fe5b1415612662576104c185856129d0565b600183600581111561267057fe5b1415612680576104c18585612ae4565b600283600581111561268e57fe5b141561269e576104c18585612b0f565b60048360058111156126ac57fe5b14156126bc576104c18585612b2e565b60038360058111156126ca57fe5b14156126db576104c1858584612bef565b60058360058111156126e957fe5b14156127075760405162461bcd60e51b815260040161037590613c25565b60405162461bcd60e51b815260040161037590613a1e565b60008282018183128015906127345750838112155b80612749575060008312801561274957508381125b61037e5760405162461bcd60e51b815260040161037590613afc565b600081830381831280159061277a5750838113155b8061278f575060008312801561278f57508381135b61037e5760405162461bcd60e51b815260040161037590613ec5565b60008183121561183e5750919050565b60008183131561183e578161037e565b60008080846020015160058111156127df57fe5b14156127ff5783516127f890849063ffffffff61250f16565b905061037e565b60018460200151600581111561281157fe5b141561282d5783516127f890849060070263ffffffff61250f16565b60028460200151600581111561283f57fe5b14156128585783516127f890849063ffffffff6128f716565b60038460200151600581111561286a57fe5b14156128865783516127f890849060030263ffffffff6128f716565b60048460200151600581111561289857fe5b14156128b45783516127f890849060060263ffffffff6128f716565b6005846020015160058111156128c657fe5b14156128df5783516127f890849063ffffffff61297116565b60405162461bcd60e51b815260040161037590613dfd565b60008080806129096201518087611114565b600c9188016000198101838104949094019650945092509006600101915060006129338484611940565b905080821115612941578091505b62015180870662015180612956868686612cc5565b020194508685101561296757600080fd5b5050505092915050565b60008080806129836201518087611114565b91870194509250905060006129338484611940565b600080806129a96201518085611114565b9196909550909350915050565b6000620151806129c7858585612cc5565b02949350505050565b6000806129dc84612d41565b905060006129e984612d41565b905060006129f686612d59565b612a025761016d612a06565b61016e5b61ffff16905081831415612a3857612a2e81612a228888612d76565b9063ffffffff612d9116565b935050505061056c565b6000612a4386612d59565b612a4f5761016d612a53565b61016e5b61ffff1690506000612a8483612a228a612a7f612a778a600163ffffffff612e4d16565b6001806129b6565b612d76565b90506000612aa183612a22612a9b886001806129b6565b8b612d76565b9050612ad7612ac76001612abb888a63ffffffff612e7216565b9063ffffffff612e7216565b611c86848463ffffffff61271f16565b9998505050505050505050565b600061037e610168612a2262015180612b03868863ffffffff612e7216565b9063ffffffff612eb416565b600061037e61016d612a2262015180612b03868863ffffffff612e7216565b6000806000806000806000612b4289612998565b975095509350612b5188612998565b945092509050601f861415612b6557601e95505b82601f1415612b7357601e92505b6000612b85848863ffffffff61276516565b90506000612b99848863ffffffff61276516565b90506000612bad848863ffffffff61276516565b9050612bdf610168612a2285611c86612bcd87601e63ffffffff612ef616565b611c868761016863ffffffff612ef616565b9c9b505050505050505050505050565b6000806000806000806000612c038a612998565b975095509350612c1289612998565b945092509050612c218a611107565b861415612c2d57601e95505b8789148015612c3c5750816002145b158015612c505750612c4d89611107565b83145b15612c5a57601e92505b6000612c6c848863ffffffff61276516565b90506000612c80848863ffffffff61276516565b90506000612c94848863ffffffff61276516565b9050612cb4610168612a2285611c86612bcd87601e63ffffffff612ef616565b9d9c50505050505050505050505050565b60006107b2841015612cd657600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f0281612d1257fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b6000612d506201518083611114565b50909392505050565b600080612d696201518084611114565b5050905061037e81612539565b600081831115612d8557600080fd5b50620151809190030490565b600081612db05760405162461bcd60e51b815260040161037590613f09565b82612dbd5750600061056c565b670de0b6b3a764000083810290848281612dd357fe5b0514612df15760405162461bcd60e51b815260040161037590613db7565b82600019148015612e055750600160ff1b84145b15612e225760405162461bcd60e51b815260040161037590613db7565b6000838281612e2d57fe5b059050806103a45760405162461bcd60e51b815260040161037590613c82565b60008282018381101561037e5760405162461bcd60e51b815260040161037590613a73565b600061037e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612f61565b600061037e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f8d565b600082612f055750600061056c565b82600019148015612f195750600160ff1b82145b15612f365760405162461bcd60e51b815260040161037590613d70565b82820282848281612f4357fe5b051461037e5760405162461bcd60e51b815260040161037590613d70565b60008184841115612f855760405162461bcd60e51b8152600401610375919061392f565b505050900390565b60008183612fae5760405162461bcd60e51b8152600401610375919061392f565b506000838581612fba57fe5b0495945050505050565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610f0001604052806078906020820280368337509192915050565b604080516080810190915260008082526020820190815260200160008152600060209091015290565b80356001600160a01b038116811461056c57600080fd5b80356009811061056c57600080fd5b803561056c8161406a565b803561056c81614077565b8035600d811061056c57600080fd5b80356013811061056c57600080fd5b803561056c81614091565b60006080828403121561311c578081fd5b6131266080614032565b905081358152602082013561313a81614077565b6020820152604082013561314d8161406a565b6040820152606082013561316081614059565b606082015292915050565b60006060828403121561317c578081fd5b6131866060614032565b905081358152602082013561319a81614077565b6020820152604082013580151581146131b257600080fd5b604082015292915050565b600061078082840312156131cf578081fd5b50919050565b600061028082840312156131cf578081fd5b6000602082840312156131f8578081fd5b61037e83836130a6565b600060208284031215613213578081fd5b813561037e81614059565b60006020828403121561322f578081fd5b5035919050565b6000806000806080858703121561324b578283fd5b84359350602085013560098110613260578384fd5b925060408501356132708161406a565b9396929550929360600135925050565b6000806000806000610cc08688031215613298578283fd5b853594506132a987602088016131bd565b93506132b9876107a088016131d5565b9250610a208601356132ca81614059565b91506132da87610a4088016131d5565b90509295509295909350565b6000602082840312156132f7578081fd5b813561037e8161406a565b600080600060c08486031215613316578081fd5b83356133218161406a565b925060208401359150613337856040860161310b565b90509250925092565b600060208284031215613351578081fd5b813561037e81614084565b6000806040838503121561336e578182fd5b823561337981614084565b946020939093013593505050565b600060208284031215613398578081fd5b813561037e81614091565b6000608082840312156133b4578081fd5b61037e838361310b565b600061078082840312156133d0578081fd5b61037e83836131bd565b600080600080610a4085870312156133f0578182fd5b6133fa86866131bd565b935061340a8661078087016131d5565b9396939550505050610a0082013591610a20013590565b60008060006107c08486031215613436578081fd5b61344085856131bd565b925061078084013591506107a084013561345981614084565b809150509250925092565b60008060006107c08486031215613479578081fd5b61348385856131bd565b9561078085013595506107a0909401359392505050565b6000806000806107e085870312156134b0578182fd5b6134ba86866131bd565b935061078085013592506107a085013591506107c08501356134db81614084565b939692955090935050565b600061078082840312156134f8578081fd5b61058061350481614032565b61350e85856130f1565b815261351d85602086016130cc565b602082015261352f85604086016130e2565b604082015261354185606086016130d7565b606082015261355385608086016130bd565b60808201526135658560a086016130cc565b60a08201526135778560c08601613100565b60c08201526135898560e08601613100565b60e082015261010061359d868287016130cc565b908201526101206135b0868683016130a6565b908201526101406135c3868683016130a6565b90820152610160848101359082015261018080850135908201526101a080850135908201526101c080850135908201526101e08085013590820152610200808501359082015261022080850135908201526102408085013590820152610260808501359082015261028080850135908201526102a080850135908201526102c080850135908201526102e08085013590820152610300808501359082015261032080850135908201526103408085013590820152610360808501359082015261038080850135908201526103a080850135908201526103c080850135908201526103e08085013590820152610400808501359082015261042080850135908201526104408085013590820152610460808501359082015261048080850135908201526104a080850135908201526104c06136ff8682870161316b565b908201526105206137128686830161316b565b6104e08301526137248684870161310b565b61050083015261373886610600870161310b565b9082015261374a85610680860161310b565b61054082015261375e85610700860161310b565b610560820152949350505050565b600061028080838503121561377f578182fd5b61378881614032565b61379285856130d7565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b6000806000806080858703121561387e578182fd5b8435935061326086602087016130bd565b6006811061389957fe5b9052565b6020808252825182820181905260009190848201906040850190845b818110156138d5578351835292840192918401916001016138b9565b50909695505050505050565b901515815260200190565b90815260200190565b602081016013831061390357fe5b91905290565b602081016002831061390357fe5b60408101601d841061392557fe5b9281526020015290565b6000602080835283518082850152825b8181101561395b5785810183015185820160400152820161393f565b8181111561396c5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602e908201527f5363686564756c652e636f6d70757465446174657346726f6d4379636c653a2060408201526d4d41585f4359434c455f53495a4560901b606082015260800190565b6020808252602e908201527f5363686564756c652e6765744e6578744379636c65446174653a20415454524960408201526d1095551157d393d517d193d5539160921b606082015260800190565b60208082526035908201527f446179436f756e74436f6e76656e74696f6e2e796561724672616374696f6e3a6040820152741020aa2a2924a12aaa22afa727aa2fa327aaa7221760591b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526032908201527f5369676e65644d6174682e666c6f61744d756c743a2043414e4e4f545f524550604082015271524553454e545f4752414e554c415249545960701b606082015260800190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526034908201527f436f6e7472616374526f6c65436f6e76656e74696f6e2e726f6c655369676e3a6040820152730810551514925095551157d393d517d193d5539160621b606082015260800190565b60208082526027908201527f5369676e65644d6174682e666c6f61744d756c743a204f564552464c4f575f4460408201526611551150d5115160ca1b606082015260800190565b6020808252602d908201527f50414d456e67696e652e7061796f666646756e6374696f6e3a2041545452494260408201526c15551157d393d517d193d55391609a1b606082015260800190565b60208082526039908201527f446179436f756e74436f6e76656e74696f6e2e796561724672616374696f6e3a60408201527f204154545249425554455f4e4f545f535550504f525445442e00000000000000606082015260800190565b60208082526031908201527f5369676e65644d6174682e666c6f61744469763a2043414e4e4f545f524550526040820152704553454e545f4752414e554c415249545960781b606082015260800190565b60208082526027908201527f436f72652e796561724672616374696f6e3a2053544152545f4e4f545f42454660408201526613d49157d1539160ca1b606082015260800190565b60208082526036908201527f50414d456e67696e652e73746174655472616e736974696f6e46756e6374696f6040820152751b8e8810551514925095551157d393d517d193d5539160521b606082015260800190565b60208082526027908201527f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f604082015266766572666c6f7760c81b606082015260800190565b60208082526026908201527f5369676e65644d6174682e666c6f61744469763a204f564552464c4f575f4445604082015265151150d5115160d21b606082015260800190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526045908201527f456e644f664d6f6e7468436f6e76656e74696f6e2e61646a757374456e644f6660408201527f4d6f6e7468436f6e76656e74696f6e3a204154545249425554455f4e4f545f4660608201526427aaa7221760d91b608082015260a00190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b60208082526024908201527f5369676e65644d6174682e666c6f61744469763a20444956494445445f42595f6040820152635a45524f60e01b606082015260800190565b600061028082019050613f6182845161388f565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60405181810167ffffffffffffffff8111828210171561405157600080fd5b604052919050565b801515811461406757600080fd5b50565b6002811061406757600080fd5b6006811061406757600080fd5b601d811061406757600080fd5b6004811061406757600080fdfea2646970667358221220fbd1f85e87ae8950e32f10e7533bb5e4a21a2781f675ff255ab07b5b658b475a64736f6c634300060b0033",
  "immutableReferences": {},
  "sourceMap": "430:19948:103:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "430:19948:103:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1010:924:78;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;631:346:84;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2699:687:103:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1776:734::-;;;;;;:::i;:::-;;:::i;1016:376::-;;;;;;:::i;:::-;;:::i;298:52:73:-;;;:::i;487:293:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;956:145::-;;;;;;:::i;:::-;;:::i;5423:5522:103:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;254:38:73:-;;;:::i;356:44::-;;;:::i;492:110:103:-;;;:::i;:::-;;;;;;;:::i;15500:319::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11301:3602::-;;;;;;:::i;:::-;;:::i;234:247:82:-;;;;;;:::i;:::-;;:::i;1599:2214:75:-;;;;;;:::i;:::-;;:::i;3751:1266:103:-;;;;;;:::i;:::-;;:::i;648:583:75:-;;;;;;:::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;2699:687:103:-;2817:12;;:::i;:::-;2845:18;;:::i;:::-;2902:22;2874:50;;338:12:73;2934:31:103;;;:48;;;2992:31;;;:48;3069:16;;;;-1:-1:-1;3050:16:103;;:35;3116:18;;;;3095;;;:39;3170:23;;;;3144;;;:49;3231:25;;;;-1:-1:-1;3203:25:103;;:53;3290:21;;;;-1:-1:-1;3266:21:103;;:45;3340:16;;;;-1:-1:-1;3321:16:103;;:35;2874:5;-1:-1:-1;2699:687:103;;;;:::o;1776:734::-;1994:6;;2100:24;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2100:38:103;;;:84;;;;-1:-1:-1;2160:24:103;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2142:42:103;:14;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2142:42:103;;;2100:84;2096:282;;;2207:160;2353:12;2207:128;;;;;;;;2239:5;2207:128;:::i;:::-;;;;;;;;2262:5;2207:128;:::i;:::-;2285:6;2309:12;2207:14;:128::i;:::-;:138;:160;:138;:160;:::i;:::-;2200:167;;;;2096:282;2395:108;;;;;;;;2423:5;2395:108;:::i;:::-;;;;;;;;2442:5;2395:108;:::i;:::-;2461:6;2481:12;2395:14;:108::i;:::-;2388:115;1776:734;-1:-1:-1;;;;;1776:734:103:o;1016:376::-;1233:12;;:::i;:::-;1268:117;;;;;;;;1305:5;1268:117;:::i;:::-;;;;;;;;1324:5;1268:117;:::i;:::-;1343:6;1363:12;1268:23;:117::i;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;5423:5522:103:-;5650:16;5682:46;;:::i;:::-;5738:13;5894:12;5881:9;:25;;;;;;;;;5877:996;;;5926:38;;;;:43;5922:941;;5989:54;;:::i;:::-;6046:336;6096:38;;;;6156:18;;;;6046:336;;;;;;;6196:28;;;6046:336;:::i;:::-;6246:26;;;;;;;;:::i;:::-;6294:4;6320:12;6354:10;6046:28;:336::i;:::-;5989:393;-1:-1:-1;6405:7:103;6400:449;397:3:73;6418:1:103;:18;;;6400:449;;;6469:23;6493:1;6469:26;;;;;;;;;;;;;6465:42;;6502:5;;6465:42;6563:5;:27;;;6533:23;6557:1;6533:26;;;;;;;;;;;;;:57;6529:71;;6592:8;;6529:71;6626:65;6638:23;6662:1;6638:26;;;;;;;;;;;;;6666:12;6680:10;6626:11;:65::i;:::-;6622:88;;6702:8;;6622:88;6748:53;6760:12;6774:23;6798:1;6774:26;;;;;;;;;;;;;6748:11;:53::i;:::-;6732:6;6739:5;6732:13;;;;;;;;;;:69;6823:7;;;;;6400:449;6438:3;;6400:449;;;;5922:941;;6916:14;6903:9;:27;;;;;;;;;6899:1101;;;6950:38;;;;:43;;;;:79;;-1:-1:-1;6997:27:103;;;;:32;;6950:79;6946:1044;;;7049:40;;:::i;:::-;:71;;;;;;;7092:28;;;7049:71;:::i;:::-;7172:7;7138:31;;;:41;7049:71;-1:-1:-1;7197:54:103;;:::i;:::-;7254:346;7304:38;;;;7364:27;;;;7413:29;7464:26;;;;;;;;:::i;:::-;7512:4;7538:12;7572:10;7254:28;:346::i;:::-;7197:403;-1:-1:-1;7623:7:103;7618:358;397:3:73;7636:1:103;:18;;;7618:358;;;7687:23;7711:1;7687:26;;;;;;;;;;;;;7683:42;;7720:5;;7683:42;7751:65;7763:23;7787:1;7763:26;;;;;;;;;;;;;7791:12;7805:10;7751:11;:65::i;:::-;7747:88;;7827:8;;7747:88;7873:55;7885:14;7901:23;7925:1;7901:26;;;;;;;;7873:55;7857:6;7864:5;7857:13;;;;;;;;;;:71;7950:7;;;;;7618:358;7656:3;;7618:358;;;;6946:1044;;;8049:12;8036:9;:25;;;;;;;;;8032:895;;;8081:32;;;;:37;8077:807;;8138:48;;:::i;:::-;8189:325;8239:32;;;;8293:18;;;;8189:325;;;;;;;8333:22;;;8189:325;:::i;:::-;8377:26;;;;;;;;:::i;:::-;8425:5;8452:12;8486:10;8189:28;:325::i;:::-;8138:376;-1:-1:-1;8537:7:103;8532:338;397:3:73;8550:1:103;:18;;;8532:338;;;8601:17;8619:1;8601:20;;;;;;;;;;;;;8597:36;;8628:5;;8597:36;8659:59;8671:17;8689:1;8671:20;;;;;;;;8659:59;8655:82;;8729:8;;8655:82;8775:47;8787:12;8801:17;8819:1;8801:20;;;;;;;;8775:47;8759:6;8766:5;8759:13;;;;;;;;;;:63;8844:7;;;;;8532:338;8570:3;;8532:338;;;;8077:807;;8970:12;8957:9;:25;;;;;;;;;8953:819;;;9002:26;;;;:31;8998:764;;9053:42;;:::i;:::-;9098:312;9148:26;;;;9196:18;;;;9098:312;;;;;;;9236:16;;;9098:312;:::i;:::-;9053:357;-1:-1:-1;9433:7:103;9428:320;397:3:73;9446:1:103;:18;;;9428:320;;;9497:11;9509:1;9497:14;;;;;;;;;;;;;9493:30;;9518:5;;9493:30;9549:53;9561:11;9573:1;9561:14;;;;;;;;9549:53;9545:76;;9613:8;;9545:76;9659:41;9671:12;9685:11;9697:1;9685:14;;;;;;;;9659:41;9643:6;9650:5;9643:13;;;;;;;;;;:57;9722:7;;;;;9428:320;9466:3;;9428:320;;;;8998:764;;9818:12;9805:9;:25;;;;;;;;;9801:909;;;9874:18;9851:19;;;;;;;;:::i;:::-;:41;;;;;;;;;;9850:87;;;;-1:-1:-1;9897:35:103;;;;:40;;9850:87;9846:854;;;9957:46;;:::i;:::-;10006:330;10056:35;;;;10113:18;;;;10006:330;;;;;;;10153:25;;;10006:330;:::i;:::-;9957:379;-1:-1:-1;10359:7:103;10354:332;397:3:73;10372:1:103;:18;;;10354:332;;;10423:15;10439:1;10423:18;;;;;;;;;;;;;10419:34;;10448:5;;10419:34;10479:57;10491:15;10507:1;10491:18;;;;;;;;10479:57;10475:80;;10547:8;;10475:80;10593:45;10605:12;10619:15;10635:1;10619:18;;;;;;;;10593:45;10577:6;10584:5;10577:13;;;;;;;;;;:61;10660:7;;;;;10354:332;10392:3;;10354:332;;;;9846:854;;10771:25;10813:5;10799:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10799:20:103;-1:-1:-1;10771:48:103;-1:-1:-1;10834:9:103;10829:84;10853:5;10849:1;:9;10829:84;;;10893:6;10900:1;10893:9;;;;;;;;;;;10879:8;10888:1;10879:11;;;;;;;;;;;;;;;;;:23;10860:3;;10829:84;;;-1:-1:-1;10930:8:103;5423:5522;-1:-1:-1;;;;;;;5423:5522:103:o;254:38:73:-;290:2;254:38;:::o;356:44::-;397:3;356:44;:::o;492:110:103:-;548:12;492:110;:::o;15500:319::-;15808:4;15500:319;;;;;;;:::o;11301:3602::-;11498:7;11653:12;11640:9;:25;;;;;;;;;11636:707;;;11685:34;;;;;;;;:::i;:::-;:42;;11723:4;11685:42;:89;;;;-1:-1:-1;11731:38:103;;;;:43;;11685:89;11681:652;;;11794:31;11828:251;;;;;;;;11887:28;;;11828:251;:::i;:::-;11937:26;;;;;;;;:::i;:::-;11985:5;:38;;;12045:16;11828:37;:251::i;:::-;11794:285;-1:-1:-1;12101:28:103;12097:51;;-1:-1:-1;12146:1:103;;-1:-1:-1;12131:17:103;;12097:51;12197:5;:27;;;12170:23;:54;12166:77;;-1:-1:-1;12241:1:103;;-1:-1:-1;12226:17:103;;12166:77;12268:50;12280:12;12294:23;12268:11;:50::i;:::-;12261:57;;;;;11681:652;12386:14;12373:9;:27;;;;;;;;;12369:776;;;12420:38;;;;:43;;;;:79;;-1:-1:-1;12467:27:103;;;;:32;;12420:79;12416:719;;;12519:40;;:::i;:::-;:71;;;;;;;12562:28;;;12519:71;:::i;:::-;12642:7;12608:31;;;:41;12519:71;-1:-1:-1;12667:38:103;12708:252;12519:71;12818:26;;;;;;;;:::i;:::-;12866:5;:38;;;12926:16;12708:37;:252::i;:::-;12667:293;-1:-1:-1;12982:35:103;12978:58;;-1:-1:-1;13034:1:103;;-1:-1:-1;13019:17:103;;-1:-1:-1;13019:17:103;12978:58;13061:59;13073:14;13089:30;13061:11;:59::i;:::-;13054:66;;;;;;12416:719;13194:12;13181:9;:25;;;;;;;;;13177:563;;;13226:32;;;;:37;13222:475;;13283:25;13311:239;;;;;;;;13370:22;;;13311:239;:::i;:::-;13414:26;;;;;;;;:::i;:::-;13462:5;:32;;;13516:16;13311:37;:239::i;:::-;13283:267;-1:-1:-1;13572:22:103;13568:45;;-1:-1:-1;13611:1:103;;-1:-1:-1;13596:17:103;;13568:45;13638:44;13650:12;13664:17;13638:11;:44::i;13222:475::-;13783:12;13770:9;:25;;;;;;;;;13766:494;;;13815:26;;;;:31;13811:439;;13866:19;13888:227;;;;;;;;13947:16;;;13888:227;:::i;:::-;13985:26;;;;;;;;:::i;:::-;14033:5;:26;;;14081:16;13888:37;:227::i;:::-;13866:249;-1:-1:-1;14137:16:103;14133:39;;-1:-1:-1;14170:1:103;;-1:-1:-1;14155:17:103;;14133:39;14197:38;14209:12;14223:11;14197;:38::i;13811:439::-;14306:12;14293:9;:25;;;;;;;;;14289:580;;;14362:18;14339:19;;;;;;;;:::i;:::-;:41;;;;;;;;;;14338:87;;;;-1:-1:-1;14385:35:103;;;;:40;;14338:87;14334:525;;;14445:23;14471:245;;;;;;;;14530:25;;;14471:245;:::i;:::-;14577:26;;;;;;;;:::i;:::-;14625:5;:35;;;14682:16;14471:37;:245::i;:::-;14445:271;-1:-1:-1;14738:20:103;14734:43;;-1:-1:-1;14775:1:103;;-1:-1:-1;14760:17:103;;14734:43;14802:42;14814:12;14828:15;14802:11;:42::i;14334:525::-;-1:-1:-1;14894:1:103;11301:3602;;;;;:::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;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;3751:1266:103:-;3953:16;3985:46;;:::i;:::-;4041:12;4096:18;;;;:23;:91;;;;;4123:64;4135:5;:25;;;4162:12;4176:10;4123:11;:64::i;:::-;4092:212;;;4219:53;4231:13;4246:5;:25;;;4219:11;:53::i;:::-;4203:6;4210:5;4203:13;;;;;;;;;;;;:69;4286:7;;4092:212;4338:18;;;;:23;4334:236;;4381:57;4393:5;:18;;;4413:12;4427:10;4381:11;:57::i;:::-;4377:183;;;4474:46;4486:13;4501:5;:18;;;4474:11;:46::i;:::-;4458:6;4465:5;4458:13;;;;;;;;;;;;:62;4538:7;;4377:183;4616:57;4628:5;:18;;;4648:12;4662:10;4616:11;:57::i;:::-;4612:170;;;4705:45;4717:12;4731:5;:18;;;4705:11;:45::i;:::-;4689:6;4696:5;4689:13;;;;;;;;;;;;:61;4764:7;;4612:170;4843:25;4885:5;4871:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4871:20:103;-1:-1:-1;4843:48:103;-1:-1:-1;4906:9:103;4901:84;4925:5;4921:9;;:1;:9;4901:84;;;4965:6;4972:1;4965:9;;;;;;;;;;;4951:8;4960:1;4951:11;;;;;;;;;;;;;;;;;:23;4932:3;;4901:84;;;-1:-1:-1;5002:8:103;3751:1266;-1:-1:-1;;;;;;3751:1266:103:o;648:583:75:-;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;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;;18892:1484:103;19082:6;19105:19;19126:20;19150:19;19162:6;19150:11;:19::i;:::-;19104:65;;-1:-1:-1;19104:65:103;-1:-1:-1;19331:12:103;19318:9;:25;;;;;;;;;19314:39;;;19352:1;19345:8;;;;;;19314:39;19380:14;19367:9;:27;;;;;;;;;19363:41;;;19403:1;19396:8;;;;;;19363:41;19431:13;19418:9;:26;;;;;;;;;19414:40;;;19453:1;19446:8;;;;;;19414:40;19481:12;19468:9;:25;;;;;;;;;19464:39;;;19502:1;19495:8;;;;;;19464:39;19530:12;19517:9;:25;;;;;;;;;19513:39;;;19551:1;19544:8;;;;;;19513:39;19579:12;19566:9;:25;;;;;;;;;19562:39;;;19600:1;19593:8;;;;;;19562:39;19628:12;19615:9;:25;;;;;;;;;19611:90;;;19649:52;19660:5;19667;19674:12;19688;19649:10;:52::i;:::-;19642:59;;;;;;19611:90;19728:13;19715:9;:26;;;;;;;;;19711:92;;;19750:53;19762:5;19769;19776:12;19790;19750:11;:53::i;19711:92::-;19830:12;19817:9;:25;;;;;;;;;19813:90;;;19851:52;19862:5;19869;19876:12;19890;19851:10;:52::i;19813:90::-;19930:12;19917:9;:25;;;;;;;;;19913:90;;;19951:52;19962:5;19969;19976:12;19990;19951:10;:52::i;19913:90::-;20030:12;20017:9;:25;;;;;;;;;20013:90;;;20051:52;20062:5;20069;20076:12;20090;20051:10;:52::i;20013:90::-;20130:12;20117:9;:25;;;;;;;;;20113:90;;;20151:52;20162:5;20169;20176:12;20190;20151:10;:52::i;20113:90::-;20230:12;20217:9;:25;;;;;;;;;20213:90;;;20251:52;20262:5;20269;20276:12;20290;20251:10;:52::i;20213:90::-;20314:55;;-1:-1:-1;;;20314:55:103;;;;;;;:::i;613:527:80:-;699:6;725;;;:16;;-1:-1:-1;735:6:80;;725:16;721:30;;;-1:-1:-1;750:1:80;743:8;;721:30;772:1;-1:-1:-1;;772:7:80;:26;;;;;-1:-1:-1;;;783:1:80;:15;772:26;770:29;762:81;;;;-1:-1:-1;;;762:81:80;;;;;;;:::i;:::-;864:5;;;868:1;864;:5;:1;887:5;;;;;:10;879:62;;;;-1:-1:-1;;;879:62:80;;;;;;;:::i;:::-;353:15;1010:25;;;1045:69;;;;-1:-1:-1;;;1045:69:80;;;;;;;:::i;16479:1773:103:-;16678:12;;:::i;:::-;16707:19;16728:20;16752:19;16764:6;16752:11;:19::i;:::-;16706:65;;-1:-1:-1;16706:65:103;-1:-1:-1;16888:12:103;16875:9;:25;;;;;;;;;16871:90;;;16909:52;16920:5;16927;16934:12;16948;16909:10;:52::i;16871:90::-;16988:12;16975:9;:25;;;;;;;;;16971:90;;;17009:52;17020:5;17027;17034:12;17048;17009:10;:52::i;16971:90::-;17088:13;17075:9;:26;;;;;;;;;17071:92;;;17110:53;17122:5;17129;17136:12;17150;17110:11;:53::i;17071:92::-;17190:14;17177:9;:27;;;;;;;;;17173:94;;;17213:54;17226:5;17233;17240:12;17254;17213;:54::i;17173:94::-;17294:12;17281:9;:25;;;;;;;;;17277:90;;;17315:52;17326:5;17333;17340:12;17354;17315:10;:52::i;17277:90::-;17394:12;17381:9;:25;;;;;;;;;17377:90;;;17415:52;17426:5;17433;17440:12;17454;17415:10;:52::i;17377:90::-;17494:12;17481:9;:25;;;;;;;;;17477:90;;;17515:52;17526:5;17533;17540:12;17554;17515:10;:52::i;17477:90::-;17594:12;17581:9;:25;;;;;;;;;17577:90;;;17615:52;17626:5;17633;17640:12;17654;17615:10;:52::i;17577:90::-;17694:13;17681:9;:26;;;;;;;;;17677:92;;;17716:53;17728:5;17735;17742:12;17756;17716:11;:53::i;17677:92::-;17796:12;17783:9;:25;;;;;;;;;17779:90;;;17817:52;17828:5;17835;17842:12;17856;17817:10;:52::i;17779:90::-;17896:12;17883:9;:25;;;;;;;;;17879:90;;;17917:52;17928:5;17935;17942:12;17956;17917:10;:52::i;17879:90::-;17996:12;17983:9;:25;;;;;;;;;17979:90;;;18017:52;18028:5;18035;18042:12;18056;18017:10;:52::i;17979:90::-;18096:12;18083:9;:25;;;;;;;;;18079:91;;;18118:52;18129:5;18136;18143:12;18157;18118:10;:52::i;18079:91::-;18181:64;;-1:-1:-1;;;18181:64:103;;;;;;;:::i;2384:2503:81:-;2673:30;;:::i;:::-;2719:36;;:::i;:::-;3048:11;;;;2765:13;;3044:360;;3088:49;3100:10;3112:12;3126:10;3088:11;:49::i;:::-;3084:138;;;3172:10;3157:5;3163;3157:12;;;;;;;;;;:25;3200:7;;3084:138;3239:47;3251:8;3261:12;3275:10;3239:11;:47::i;:::-;3235:133;;;3324:4;3310:18;;;;3306:47;;;3345:8;3330:5;3336;3330:12;;;;;;;;;;:23;3306:47;-1:-1:-1;3388:5:81;-1:-1:-1;3381:12:81;;3044:360;3429:10;3414:12;;3512:51;3539:4;3429:10;3557:5;3512:26;:51::i;:::-;3478:85;;3650:615;3664:8;3657:4;:15;3650:615;;;3790:43;3802:4;3808:12;3822:10;3790:11;:43::i;:::-;3786:231;;;3870:18;3861:28;;3853:87;;;;-1:-1:-1;;;3853:87:81;;;;;;;:::i;:::-;3973:4;3958:5;3964;3958:12;;;;;;;;;;:19;3995:7;;;;;3786:231;4031:12;;;;;4066:10;:38;;;;;;;;;4065:189;;4207:47;4224:5;4231:10;4243;4207:16;:47::i;:::-;4065:189;;;4124:64;4140:47;4157:5;4164:10;4176;4140:16;:47::i;:::-;4124:15;:64::i;:::-;4058:196;;3650:615;;;4349:4;4335:18;;;;4331:157;;;4373:47;4385:8;4395:12;4409:10;4373:11;:47::i;:::-;4369:109;;;4455:8;4440:5;4446;4440:12;;;;;;;;;;:23;4369:109;4615:1;4607:5;:9;:68;;;;;4620:55;4632:5;4646:1;4638:5;:9;4632:16;;;;;;4620:55;4603:255;;;4706:6;4695:5;:7;;;:17;;;;;;;;;:30;;;;;4724:1;4716:5;:9;4695:30;:50;;;;;4741:4;4729:8;:16;;4695:50;4691:157;;;4784:5;4790;4784:12;;;;;;;;;;;4765:5;4779:1;4771:5;:9;4765:16;;;;;;;;;;:31;4821:5;4827;4821:12;;;;;;;;;;4814:19;;;;4691:157;-1:-1:-1;4875:5:81;;-1:-1:-1;;;;2384:2503:81;;;;;;;;;;:::o;5714:342::-;5877:4;5918:12;5901:14;:29;5897:47;;;-1:-1:-1;5939:5:81;5932:12;;5897:47;5976:9;5958:14;:27;;:56;;;;;6002:12;5989:9;:25;;5958:56;5954:73;;;-1:-1:-1;6023:4:81;6016:11;;5092:543;5339:11;;;;5312:7;;5339:20;;:42;;-1:-1:-1;5363:18:81;;5339:42;5335:65;;;-1:-1:-1;5390:10:81;5383:17;;5335:65;5474:24;5419:51;5446:4;5452:10;5464:5;5419:26;:51::i;:::-;:79;;;;;;;;;5418:210;;5587:41;5604:5;5611:13;5626:1;5587:16;:41::i;:::-;5418:210;;;5514:58;5530:41;5547:5;5554:13;5569:1;5530:16;:41::i;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;457:1019:104:-;655:6;;681:5;:14;;;:28;;;;;;;;;677:158;;;797:5;:13;;;750:28;759:5;:18;;;750:8;:28::i;:::-;:60;;;725:99;;;;677:158;845:24;913:328;943:96;957:5;:16;;;975:5;:27;;;1004:5;:14;;;1020:5;:18;;;943:13;:96::i;:::-;1057:92;1071:12;1085:5;:27;;;1114:5;:14;;;1130:5;:18;;;1057:13;:92::i;:::-;1167:5;:24;;;1209:5;:18;;;913:12;:328::i;:::-;893:348;;1283:176;1334:111;1421:5;:23;;;1334:59;1379:5;:13;;;1334:17;:44;;:59;;;;:::i;:111::-;1283:16;;;;;:176;:33;:176;:::i;1616:405::-;1827:6;1932:72;1977:5;:26;;;1932:5;:23;;;:44;;:72;;;;:::i;:::-;1870:28;1879:5;:18;;;1870:8;:28::i;:::-;-1:-1:-1;;1870:47:104;:134;;;1849:165;;1616:405;;;;;;:::o;2148:974::-;2346:6;2368:24;2436:328;2466:96;2480:5;:16;;;2498:5;:27;;;2527:5;:14;;;2543:5;:18;;;2466:13;:96::i;2436:328::-;2416:348;;2806:299;2878:213;2942:131;3049:5;:23;;;2942:75;2991:5;:25;;;2942:17;:48;;:75;;;;:::i;:131::-;2878:21;;;;;:213;:42;:213;:::i;:::-;2806:31;;;;;:299;:54;:299;:::i;3258:330::-;3462:6;3548:5;:23;;;3505:28;3514:5;:18;;;3505:8;:28::i;:::-;:66;;;;3258:330;-1:-1:-1;;;;;3258:330:104:o;3711:353::-;3921:6;3964:83;4023:5;:23;;;3964:5;:31;;;:58;;:83;;;;:::i;4193:1269::-;4391:6;4413:24;4481:328;4511:96;4525:5;:16;;;4543:5;:27;;;4572:5;:14;;;4588:5;:18;;;4511:13;:96::i;4481:328::-;4461:348;-1:-1:-1;4855:13:104;4834:5;:17;;;:34;;;;;;;;;4830:626;;;4956:5;:17;;;4909:28;4918:5;:18;;;4909:8;:28::i;:::-;:64;;;4884:103;;;;;4830:626;5029:13;5008:5;:17;;;:34;;;;;;;;;5004:452;;;5130:115;5221:5;:23;;;5130:63;5175:5;:17;;;5130;:44;;:63;;;;:::i;:115::-;5083:28;5092:5;:18;;;5083:8;:28::i;5004:452::-;5407:23;;;;5362:69;;:17;;:69;:44;:69;:::i;5612:955::-;5810:6;5832:24;5900:328;5930:96;5944:5;:16;;;5962:5;:27;;;5991:5;:14;;;6007:5;:18;;;5930:13;:96::i;5900:328::-;5880:348;;6313:237;6413:123;6512:5;:23;;;6413:71;6458:5;:25;;;6413:17;:44;;:71;;;;:::i;:123::-;6356:21;;;;6313:25;;;;:65;;;:42;:65;:::i;:::-;:82;:237;:82;:237;:::i;:::-;6270:28;6279:5;:18;;;6270:8;:28::i;:::-;:280;;;;5612:955;-1:-1:-1;;;;;;5612:955:104:o;792:1096:105:-;991:12;;:::i;:::-;1019:24;1087:328;1117:96;1131:5;:16;;;1149:5;:27;;;1178:5;:14;;;1194:5;:18;;;1117:13;:96::i;1087:328::-;1067:348;;1459:173;1507:115;1604:17;1507:73;1556:5;:23;;;1507:5;:25;;;:48;;:73;;;;:::i;:115::-;1459:21;;;;;:173;:34;:173;:::i;:::-;1435:21;;;:197;1741:23;;;;1704:13;;;;1661:156;;1704:103;;1789:17;;1704:61;;:13;:61;:36;:61;:::i;1661:156::-;1642:16;;;:175;-1:-1:-1;;;1827:16:105;;;:31;1642:16;792:1096;-1:-1:-1;792:1096:105:o;2024:941::-;2223:12;;:::i;:::-;2251:24;2319:328;2349:96;2363:5;:16;;;2381:5;:27;;;2410:5;:14;;;2426:5;:18;;;2349:13;:96::i;2319:328::-;2299:348;;2691:173;2739:115;2836:17;2739:73;2788:5;:23;;;2739:5;:25;;;:48;;:73;;;;:::i;2691:173::-;2667:21;;;:197;-1:-1:-1;;2893:1:105;2874:16;;;:20;-1:-1:-1;2904:16:105;;;:31;2667:21;2024:941;-1:-1:-1;2024:941:105:o;3099:497::-;3299:12;;:::i;:::-;3384:5;:23;;;3353:28;3362:5;:18;;;3353:8;:28::i;:::-;:54;;;3327:23;;;:80;-1:-1:-1;;3445:25:105;;;;3417;;;:53;3480:16;;;:31;3545:21;;;;;3521;;;:45;3327:23;3099:497::o;3737:1215::-;3938:12;;:::i;:::-;3966:24;4034:328;4064:96;4078:5;:16;;;4096:5;:27;;;4125:5;:14;;;4141:5;:18;;;4064:13;:96::i;4034:328::-;4014:348;;4408:253;4458:193;4514:123;4619:17;4514:77;4567:5;:23;;;4514:5;:25;;;:52;;:77;;;;:::i;4458:193::-;4408:23;;;;;:253;:36;:253;:::i;:::-;4382:23;;;:279;;;4695:1;4671:21;;;:25;4768:13;;;;4725:156;;4768:103;;4853:17;;4768:61;;:13;:61;:36;:61;:::i;5086:924::-;5285:12;;:::i;:::-;5313:24;5381:328;5411:96;5425:5;:16;;;5443:5;:27;;;5472:5;:14;;;5488:5;:18;;;5411:13;:96::i;5381:328::-;5753:1;5729:21;;;:25;5863:23;;;;5826:13;;;;5361:348;;-1:-1:-1;5783:156:105;;5826:103;;5361:348;;5826:61;;;:36;:61;:::i;15021:1193::-;15220:12;;:::i;:::-;15248:24;15316:328;15346:96;15360:5;:16;;;15378:5;:27;;;15407:5;:14;;;15423:5;:18;;;15346:13;:96::i;15316:328::-;15296:348;;15688:173;15736:115;15833:17;15736:73;15785:5;:23;;;15736:5;:25;;;:48;;:73;;;;:::i;15688:173::-;15664:21;;;:197;15970:23;;;;15933:13;;;;15890:156;;15933:103;;16018:17;;15933:61;;:13;:61;:36;:61;:::i;15890:156::-;15871:16;;;:175;-1:-1:-1;;16082:1:105;16056:23;;;:27;-1:-1:-1;16121:22:105;16093:50;;16153:16;;;:31;15871:16;16153;-1:-1:-1;15021:1193:105:o;9949:1154::-;10149:12;;:::i;:::-;10177:24;10245:328;10275:96;10289:5;:16;;;10307:5;:27;;;10336:5;:14;;;10352:5;:18;;;10275:13;:96::i;10245:328::-;10225:348;;10617:173;10665:115;10762:17;10665:73;10714:5;:23;;;10665:5;:25;;;:48;;:73;;;;:::i;10617:173::-;10593:21;;;:197;10899:23;;;;10862:13;;;;10819:156;;10862:103;;10947:17;;10862:61;;:13;:61;:36;:61;:::i;10819:156::-;10800:16;;;:175;-1:-1:-1;;;11013:19:105;;;;;;10985:25;;;:47;11042:16;;;:31;;;;10800:16;9949:1154::o;11241:2014::-;11434:12;;:::i;:::-;11658:16;;;;11632:20;;;;11578:11;;11592:83;;:61;;11607:12;;11592:61;:39;:61;:::i;:83::-;11578:97;;11838:16;11857:35;11866:5;:25;;;11857:4;:8;;:35;;;;:::i;:::-;11838:54;;12157:53;12194:5;:15;;;12157:32;12171:5;:17;;;12157:9;:13;;:32;;;;:::i;:::-;:36;:53;:36;:53;:::i;:::-;12227:25;;;;12145:65;;-1:-1:-1;12227:40:105;;12145:65;12227:40;:29;:40;:::i;:::-;12220:47;;12474:44;12504:5;:13;;;12474:25;12483:5;:15;;;12474:4;:8;;:25;;;;:::i;:44::-;12467:51;;12529:24;12597:328;12627:96;12641:5;:16;;;12659:5;:27;;;12688:5;:14;;;12704:5;:18;;;12627:13;:96::i;:::-;12741:92;12755:12;12769:5;:27;;;12798:5;:14;;;12814:5;:18;;;12741:13;:92::i;:::-;12851:5;:24;;;12893:5;:18;;;12597:12;:328::i;:::-;12577:348;;12969:173;13017:115;13114:17;13017:73;13066:5;:23;;;13017:5;:25;;;:48;;:73;;;;:::i;:115::-;12969:21;;;;;:173;:34;:173;:::i;:::-;12945:21;;;:197;-1:-1:-1;;13152:25:105;;;:32;-1:-1:-1;;13194:16:105;;;:31;12945:21;11241:2014;-1:-1:-1;11241:2014:105:o;13402:1481::-;13601:12;;:::i;:::-;13629:24;13697:328;13727:96;13741:5;:16;;;13759:5;:27;;;13788:5;:14;;;13804:5;:18;;;13727:13;:96::i;13697:328::-;13677:348;;14069:173;14117:115;14214:17;14117:73;14166:5;:23;;;14117:5;:25;;;:48;;:73;;;;:::i;14069:173::-;14045:21;;;:197;14351:23;;;;14314:13;;;;14271:156;;14314:103;;14399:17;;14314:61;;:13;:61;:36;:61;:::i;14271:156::-;14252:16;;;:175;14466:17;14443:5;:19;;;:40;;;;;;;;;14442:88;;;-1:-1:-1;14512:17:105;14489:5;:19;;;:40;;;;;;;;;14442:88;14438:182;;;14580:1;14546:31;;;:35;14438:182;14657:18;14634:5;:19;;;:41;;;;;;;;;14633:89;;;-1:-1:-1;14704:17:105;14681:5;:19;;;:40;;;;;;;;;14633:89;14629:183;;;14772:1;14738:31;;;:35;14629:183;-1:-1:-1;;;14822:16:105;;;:31;:16;13402:1481;-1:-1:-1;13402:1481:105:o;16350:495::-;16555:12;;:::i;:::-;-1:-1:-1;;16609:1:105;16583:23;;;:27;;;16620:25;;;:29;;;16659:21;;;:25;;;16694:16;;;:20;16752:22;16724:50;;-1:-1:-1;16784:16:105;;:31;16583:23;16784:16;-1:-1:-1;16350:495:105:o;16976:1674::-;17168:12;;:::i;:::-;17228:25;17257:5;:23;;;17284:1;17257:28;17256:242;;17475:5;:23;;;17256:242;;;17301:171;17333:12;17363:5;:27;;;17408:5;:14;;;17440:5;:18;;;17301:14;:171::i;:::-;17610:17;;;;:23;;;17228:270;;-1:-1:-1;17544:12:105;;17509:24;;17606:305;;;17649:17;17669:60;17692:5;:17;;;17711;17669:22;:60::i;:::-;17649:80;;17767:9;17747:16;:29;17743:158;;17824:22;17796:50;;;17824:22;-1:-1:-1;17743:158:105;17606:305;;17925:5;:23;;;:29;;;:49;;;;;17959:15;17958:16;17925:49;17921:398;;;17990:23;18016:66;18039:5;:23;;;18064:17;18016:22;:66::i;:::-;17990:92;;18120:15;18100:16;:35;18096:213;;18183:22;18155:50;;18096:213;;;18272:22;18244:50;;18096:213;17921:398;;18333:23;;;;18329:292;;18439:171;18471:12;18501:5;:27;;;18546:5;:14;;;18578:5;:18;;;18439:14;:171::i;:::-;18413:23;;;:197;18329:292;-1:-1:-1;18638:5:105;;16976:1674;-1:-1:-1;;;;;;16976:1674:105:o;620:957:81:-;751:7;;;809:5;:7;;;:14;;;;;;;;;805:736;;;873:7;;854:40;;:10;;873:20;;854:40;:18;:40;:::i;805:736::-;926:3;915:5;:7;;;:14;;;;;;;;;911:630;;;979:7;;960:44;;:10;;979:24;;989:1;979:24;960:44;:18;:44;:::i;911:630::-;1036:3;1025:5;:7;;;:14;;;;;;;;;1021:520;;;1091:7;;1070:42;;:10;;1091:20;;1070:42;:20;:42;:::i;1021:520::-;1144:3;1133:5;:7;;;:14;;;;;;;;;1129:412;;;1199:7;;1178:46;;:10;;1199:24;;1209:1;1199:24;1178:46;:20;:46;:::i;1129:412::-;1256:3;1245:5;:7;;;:14;;;;;;;;;1241:300;;;1311:7;;1290:46;;:10;;1311:24;;1321:1;1311:24;1290:46;:20;:46;:::i;1241:300::-;1368:3;1357:5;:7;;;:14;;;;;;;;;1353:188;;;1422:7;;1402:41;;:10;;1422:20;;1402:41;:19;:41;:::i;1353:188::-;1474:56;;-1:-1:-1;;;1474:56:81;;;;;;;:::i;2150:865:78:-;2226:7;2717:12;2733:13;2750:11;2786:54;2830:9;2786:43;:54::i;:::-;2765:75;;-1:-1:-1;2765:75:78;-1:-1:-1;2765:75:78;-1:-1:-1;2844:22:78;2869:56;2765:75;;2869:43;:56::i;:::-;2844:81;;2937:74;2983:4;2989:5;2996:14;2937:45;:74::i;:::-;2930:81;2150:865;-1:-1:-1;;;;;;2150:865:78:o;6898:175:106:-;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;251:523:76:-;343:4;;367:12;:32;;;;;;;;;363:46;;;-1:-1:-1;408:1:76;401:8;;363:46;439:16;423:12;:32;;;;;;;;;419:47;;;-1:-1:-1;;;457:9:76;;419:47;497:16;481:12;:32;;;;;;;;;477:46;;;-1:-1:-1;522:1:76;515:8;;477:46;553:16;537:12;:32;;;;;;;;;533:47;;;-1:-1:-1;;;571:9:76;;533:47;611:16;595:12;:32;;;;;;;;;591:46;;;-1:-1:-1;636:1:76;629:8;;591:46;667:16;651:12;:32;;;;;;;;;647:47;;;-1:-1:-1;;;685:9:76;;647:47;705:62;;-1:-1:-1;;;705:62:76;;;;;;;:::i;648:1214:77:-;848:6;894:14;878:12;:30;;870:82;;;;-1:-1:-1;;;870:82:77;;;;;;;:::i;:::-;974:21;966:4;:29;;;;;;;;;962:894;;;1018:42;1031:14;1047:12;1018;:42::i;962:894::-;1089:23;1081:4;:31;;;;;;;;;1077:779;;;1135:46;1152:14;1168:12;1135:16;:46::i;1077:779::-;1210:23;1202:4;:31;;;;;;;;;1198:658;;;1256:50;1277:14;1293:12;1256:20;:50::i;1198:658::-;1335:26;1327:4;:34;;;;;;;;;1323:533;;;1384:47;1402:14;1418:12;1384:17;:47::i;1323:533::-;1460:30;1452:4;:38;;;;;;;;;1448:408;;;1513:65;1535:14;1551:12;1565;1513:21;:65::i;1448:408::-;1607:26;1599:4;:34;;;;;;;;;1595:261;;;1684:67;;-1:-1:-1;;;1684:67:77;;;;;;;:::i;1595:261::-;1782:63;;-1:-1:-1;;;1782:63:77;;;;;;;:::i;1651:210:118:-;1707:6;1736:5;;;1760:6;;;;;;:16;;;1775:1;1770;:6;;1760:16;1759:38;;;;1786:1;1782;:5;:14;;;;;1795:1;1791;:5;1782:14;1751:84;;;;-1:-1:-1;;;1751:84:118;;;;;;;:::i;1357:213::-;1413:6;1442:5;;;1466:6;;;;;;:16;;;1481:1;1476;:6;;1466:16;1465:38;;;;1492:1;1488;:5;:14;;;;;1501:1;1497;:5;1488:14;1457:87;;;;-1:-1:-1;;;1457:87:118;;;;;;;:::i;2019:106:80:-;2075:6;2109:1;2104;:6;;:14;;-1:-1:-1;2117:1:80;2097:21;-1:-1:-1;2019:106:80:o;1830:::-;1886:6;1920:1;1915;:6;;:14;;1928:1;1915:14;;443:879:83;559:7;;;617:6;:8;;;:15;;;;;;;;;613:673;;;681:8;;663:27;;:9;;:27;:17;:27;:::i;:::-;648:42;;613:673;;;723:3;711:6;:8;;;:15;;;;;;;;;707:579;;;775:8;;757:31;;:9;;786:1;775:12;757:31;:17;:31;:::i;707:579::-;821:3;809:6;:8;;;:15;;;;;;;;;805:481;;;875:8;;855:29;;:9;;:29;:19;:29;:::i;805:481::-;917:3;905:6;:8;;;:15;;;;;;;;;901:385;;;971:8;;951:33;;:9;;982:1;971:12;951:33;:19;:33;:::i;901:385::-;1017:3;1005:6;:8;;;:15;;;;;;;;;1001:285;;;1071:8;;1051:33;;:9;;1082:1;1071:12;1051:33;:19;:33;:::i;1001:285::-;1117:3;1105:6;:8;;;:15;;;;;;;;;1101:185;;;1170:8;;1151:28;;:9;;:28;:18;:28;:::i;1101:185::-;1210:65;;-1:-1:-1;;;1210:65:83;;;;;;;:::i;8467:561:106:-;8539:17;;;;8604:40;1020:12;8616:9;:27;;8604:40;8702:2;8654:16;;;-1:-1:-1;;8689:9:106;;8688:16;;;8680:24;;;;;-1:-1:-1;8654:16:106;-1:-1:-1;8568:76:106;-1:-1:-1;8702:2:106;8722:16;8741:1;8722:20;8714:28;;8752:16;8771:28;8787:4;8793:5;8771:15;:28::i;:::-;8752:47;;8819:11;8813:3;:17;8809:65;;;8852:11;8846:17;;8809:65;1020:12;8950:9;:27;1020:12;8898:31;8912:4;8918:5;8925:3;8898:13;:31::i;:::-;:49;:79;8883:94;;9011:9;8995:12;:25;;8987:34;;;;;;8467:561;;;;;;;;:::o;7977:485::-;8047:17;;;;8112:40;1020:12;8124:9;:27;;8112:40;8162:14;;;;-1:-1:-1;8076:76:106;-1:-1:-1;8076:76:106;-1:-1:-1;8186:16:106;8205:28;8162:14;8076:76;8205:15;:28::i;4390:175::-;4454:9;;;4518:40;1020:12;4530:9;:27;;4518:40;4497:61;;;;-1:-1:-1;4497:61:106;;-1:-1:-1;4390:175:106;-1:-1:-1;;4390:175:106:o;3920:177::-;4003:14;1020:12;4041:31;4055:4;4061:5;4068:3;4041:13;:31::i;:::-;:49;;3920:177;-1:-1:-1;;;;3920:177:106:o;1921:1110:77:-;2026:6;2048:14;2065:46;2101:9;2065:35;:46::i;:::-;2048:63;;2121:14;2138:44;2174:7;2138:35;:44::i;:::-;2121:61;;2193:17;2214:49;2253:9;2214:38;:49::i;:::-;2213:63;;2273:3;2213:63;;;2267:3;2213:63;2193:83;;;;2301:6;2291;:16;2287:139;;;2330:85;2404:10;2337:56;2374:9;2385:7;2337:36;:56::i;:::-;2330:73;:85;:73;:85;:::i;:::-;2323:92;;;;;;;2287:139;2436:18;2458:47;2497:7;2458:38;:47::i;:::-;2457:61;;2515:3;2457:61;;;2509:3;2457:61;2436:82;;;-1:-1:-1;2529:20:77;2552:178;2719:10;2559:149;2609:9;2632:66;2678:13;:6;2689:1;2678:13;:10;:13;:::i;:::-;2693:1;2696;2632:45;:66::i;:::-;2559:36;:149::i;2552:178::-;2529:201;;2740:21;2764:170;2922:11;2771:140;2821:59;2867:6;2875:1;2878;2821:45;:59::i;:::-;2894:7;2771:36;:140::i;2764:170::-;2740:194;-1:-1:-1;2952:72:77;2997:25;3020:1;2997:18;:6;3008;2997:18;:10;:18;:::i;:::-;:22;:25;:22;:25;:::i;:::-;2952:33;:13;2970:14;2952:33;:17;:33;:::i;:72::-;2945:79;1921:1110;-1:-1:-1;;;;;;;;;1921:1110:77:o;3092:204::-;3201:6;3231:57;3284:3;3238:35;3267:5;3239:22;:7;3251:9;3239:22;:11;:22;:::i;:::-;3238:28;:35;:28;:35;:::i;3363:208::-;3476:6;3506:57;3559:3;3513:35;3542:5;3514:22;:7;3526:9;3514:22;:11;:22;:::i;3634:831::-;3744:6;3766:13;3789:15;3814:14;3839:13;3862:15;3887:14;3939:54;3983:9;3939:43;:54::i;:::-;3912:81;-1:-1:-1;3912:81:77;-1:-1:-1;3912:81:77;-1:-1:-1;4030:52:77;4074:7;4030:43;:52::i;:::-;4003:79;-1:-1:-1;4003:79:77;-1:-1:-1;4003:79:77;-1:-1:-1;4106:2:77;4097:11;;4093:52;;;4132:2;4124:10;;4093:52;4159:5;4168:2;4159:11;4155:52;;;4194:2;4186:10;;4155:52;4217:11;4231:32;4238:5;4256;4231:32;:17;:32;:::i;:::-;4217:46;-1:-1:-1;4273:11:77;4287:36;4294:7;4314;4287:36;:19;:36;:::i;:::-;4273:50;-1:-1:-1;4333:11:77;4347:34;4354:6;4373;4347:34;:18;:34;:::i;:::-;4333:48;-1:-1:-1;4400:57:77;4453:3;4401:41;4437:4;4401:31;4419:12;:4;4428:2;4419:12;:8;:12;:::i;:::-;4401:13;:4;4410:3;4401:13;:8;:13;:::i;4400:57::-;4392:66;3634:831;-1:-1:-1;;;;;;;;;;;;3634:831:77:o;4533:1003::-;4669:6;4691:13;4714:15;4739:14;4764:13;4787:15;4812:14;4864:54;4908:9;4864:43;:54::i;:::-;4837:81;-1:-1:-1;4837:81:77;-1:-1:-1;4837:81:77;-1:-1:-1;4955:52:77;4999:7;4955:43;:52::i;:::-;4928:79;-1:-1:-1;4928:79:77;-1:-1:-1;4928:79:77;-1:-1:-1;5031:53:77;5074:9;5031:42;:53::i;:::-;5022:5;:62;5018:103;;;5108:2;5100:10;;5018:103;5148:12;5137:7;:23;:39;;;;;5164:7;5175:1;5164:12;5137:39;5135:42;:106;;;;;5190:51;5233:7;5190:42;:51::i;:::-;5181:5;:60;5135:106;5131:147;;;5265:2;5257:10;;5131:147;5288:11;5302:32;5309:5;5327;5302:32;:17;:32;:::i;:::-;5288:46;-1:-1:-1;5344:11:77;5358:36;5365:7;5385;5358:36;:19;:36;:::i;:::-;5344:50;-1:-1:-1;5404:11:77;5418:34;5425:6;5444;5418:34;:18;:34;:::i;:::-;5404:48;-1:-1:-1;5471:57:77;5524:3;5472:41;5508:4;5472:31;5490:12;:4;5499:2;5490:12;:8;:12;:::i;5471:57::-;5463:66;4533:1003;-1:-1:-1;;;;;;;;;;;;;4533:1003:77:o;2045:511:106:-;2124:10;2162:4;2154;:12;;2146:21;;;;;;2193:4;2225:5;2256:3;2177:9;1157:7;2490:1;2440;2483:3;2454:4;2477:2;-1:-1:-1;;2462:11:106;;2461:18;2446:33;;;2445:41;2440:47;:51;2425:2;;-1:-1:-1;;2399:11:106;;2398:18;2419:2;2398:23;2394:1;2385:6;:10;:36;2378:3;:44;:49;;;;;;2364:1;2319:4;2358:2;-1:-1:-1;;2343:11:106;;2342:18;2327:33;;2335:4;2327:33;2319:42;:46;2301:5;2284:4;:22;:81;:143;:207;:234;2271:247;;2542:6;2529:20;;2045:511;;;;;;;;;:::o;7079:135::-;7135:9;7167:40;1020:12;7179:9;:27;;7167:40;-1:-1:-1;7156:51:106;;7079:135;-1:-1:-1;;;7079:135:106:o;5630:185::-;5689:13;;5730:40;1020:12;5742:9;:27;;5730:40;5714:56;;;;5791:17;5803:4;5791:11;:17::i;12485:210::-;12564:10;12611:11;12594:13;:28;;12586:37;;;;;;-1:-1:-1;1020:12:106;12642:27;;;12641:47;;12485:210::o;1146:600:80:-;1231:6;1261;1253:55;;;;-1:-1:-1;;;1253:55:80;;;;;;;:::i;:::-;1372:6;1368:20;;-1:-1:-1;1387:1:80;1380:8;;1368:20;353:15;1409:25;;;;:1;:25;:1;1452:5;;;;;:30;1444:81;;;;-1:-1:-1;;;1444:81:80;;;;;;;:::i;:::-;1546:1;-1:-1:-1;;1546:7:80;:26;;;;;-1:-1:-1;;;1557:1:80;:15;1546:26;1544:29;1536:80;;;;-1:-1:-1;;;1536:80:80;;;;;;;:::i;:::-;1626:8;1641:1;1637;:5;;;;;;;-1:-1:-1;1660:6:80;1652:68;;;;-1:-1:-1;;;1652:68:80;;;;;;;:::i;867:176:117:-;925:7;956:5;;;979:6;;;;971:46;;;;-1:-1:-1;;;971:46:117;;;;;;;:::i;1307:134::-;1365:7;1391:43;1395:1;1398;1391:43;;;;;;;;;;;;;;;;;:3;:43::i;3066:130::-;3124:7;3150:39;3154:1;3157;3150:39;;;;;;;;;;;;;;;;;:3;:39::i;325:554:118:-;381:6;621;617:45;;-1:-1:-1;650:1:118;643:8;;617:45;682:1;-1:-1:-1;;682:7:118;:27;;;;;-1:-1:-1;;;693:1:118;:16;682:27;680:30;672:82;;;;-1:-1:-1;;;672:82:118;;;;;;;:::i;:::-;776:5;;;780:1;776;:5;:1;799:5;;;;;:10;791:62;;;;-1:-1:-1;;;791:62:118;;;;;;;:::i;1725:187:117:-;1811:7;1846:12;1838:6;;;;1830:29;;;;-1:-1:-1;;;1830:29:117;;;;;;;;:::i;:::-;-1:-1:-1;;;1881:5:117;;;1725:187::o;3671:338::-;3757:7;3857:12;3850:5;3842:28;;;;-1:-1:-1;;;3842:28:117;;;;;;;;:::i;:::-;;3880:9;3896:1;3892;:5;;;;;;;3671:338;-1:-1:-1;;;;;3671:338:117:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;-1:-1;;;;;51101:54;;52785:35;;52775:2;;52834:1;;52824:12;410:184;504:20;;53188:1;53178:12;;53168:2;;53204:1;;53194:12;601:158;682:20;;707:47;682:20;707:47;:::i;766:180::-;858:20;;883:58;858:20;883:58;:::i;953:166::-;1038:20;;53548:2;53538:13;;53528:2;;53565:1;;53555:12;1126:166;1211:20;;53668:2;53658:13;;53648:2;;53685:1;;53675:12;2156:164;2240:20;;2265:50;2240:20;2265:50;:::i;2805:755::-;;2916:4;2904:9;2899:3;2895:19;2891:30;2888:2;;;-1:-1;;2924:12;2888:2;2952:20;2916:4;2952:20;:::i;:::-;2943:29;;15498:6;15485:20;3033:16;3026:75;3159:2;3224:9;3220:22;858:20;883:58;935:5;883:58;:::i;:::-;3159:2;3174:16;;3167:82;3307:2;3368:22;;682:20;707:47;682:20;707:47;:::i;:::-;3307:2;3322:16;;3315:82;3459:2;3510:22;;206:20;231:30;206:20;231:30;:::i;:::-;3459:2;3474:16;;3467:72;3478:5;2882:678;-1:-1;;2882:678::o;3583:606::-;;3693:4;3681:9;3676:3;3672:19;3668:30;3665:2;;;-1:-1;;3701:12;3665:2;3729:20;3693:4;3729:20;:::i;:::-;3720:29;;15498:6;15485:20;3810:16;3803:75;3936:2;4001:9;3997:22;858:20;883:58;935:5;883:58;:::i;:::-;3936:2;3951:16;;3944:82;4088:2;4139:22;;206:20;50236:13;;50229:21;52906:32;;52896:2;;-1:-1;;52942:12;52896:2;4088;4103:16;;4096:72;4107:5;3659:530;-1:-1;;3659:530::o;4220:162::-;;4333:4;4324:6;4319:3;4315:16;4311:27;4308:2;;;-1:-1;;4341:12;4308:2;-1:-1;4361:15;4301:81;-1:-1;4301:81::o;11871:158::-;;11981:3;11972:6;11967:3;11963:16;11959:26;11956:2;;;-1:-1;;11988:12;15555:241;;15659:2;15647:9;15638:7;15634:23;15630:32;15627:2;;;-1:-1;;15665:12;15627:2;15727:53;15772:7;15748:22;15727:53;:::i;15803:235::-;;15904:2;15892:9;15883:7;15879:23;15875:32;15872:2;;;-1:-1;;15910:12;15872:2;219:6;206:20;231:30;255:5;231:30;:::i;16045:241::-;;16149:2;16137:9;16128:7;16124:23;16120:32;16117:2;;;-1:-1;;16155:12;16117:2;-1:-1;340:20;;16111:175;-1:-1;16111:175::o;16293:699::-;;;;;16489:3;16477:9;16468:7;16464:23;16460:33;16457:2;;;-1:-1;;16496:12;16457:2;353:6;340:20;16548:63;;16648:2;16718:9;16714:22;504:20;53188:1;53181:5;53178:12;53168:2;;-1:-1;;53194:12;53168:2;16656:90;-1:-1;16783:2;16836:22;;682:20;707:47;682:20;707:47;:::i;:::-;16451:541;;;;-1:-1;16791:77;;16905:2;16944:22;15485:20;;-1:-1;;16451:541::o;16999:905::-;;;;;;17249:4;17237:9;17228:7;17224:23;17220:34;17217:2;;;-1:-1;;17257:12;17217:2;353:6;340:20;17309:63;;17427:82;17501:7;17409:2;17481:9;17477:22;17427:82;:::i;:::-;17417:92;;17566:79;17637:7;17546:4;17617:9;17613:22;17566:79;:::i;:::-;17556:89;;17682:4;17724:9;17720:22;206:20;231:30;255:5;231:30;:::i;:::-;17692:60;-1:-1;17809:79;17880:7;17789:4;17856:22;;17809:79;:::i;:::-;17799:89;;17211:693;;;;;;;;:::o;17911:293::-;;18041:2;18029:9;18020:7;18016:23;18012:32;18009:2;;;-1:-1;;18047:12;18009:2;695:6;682:20;707:47;748:5;707:47;:::i;18211:588::-;;;;18397:3;18385:9;18376:7;18372:23;18368:33;18365:2;;;-1:-1;;18404:12;18365:2;695:6;682:20;707:47;748:5;707:47;:::i;:::-;18456:89;-1:-1;18582:2;18621:22;;15485:20;;-1:-1;18708:75;18775:7;18690:2;18751:22;;18708:75;:::i;:::-;18698:85;;18359:440;;;;;:::o;18806:271::-;;18925:2;18913:9;18904:7;18900:23;18896:32;18893:2;;;-1:-1;;18931:12;18893:2;1768:6;1755:20;1780:48;1822:5;1780:48;:::i;19084:396::-;;;19220:2;19208:9;19199:7;19195:23;19191:32;19188:2;;;-1:-1;;19226:12;19188:2;1768:6;1755:20;1780:48;1822:5;1780:48;:::i;:::-;19278:78;19393:2;19432:22;;;;15485:20;;-1:-1;;;19182:298::o;19487:279::-;;19610:2;19598:9;19589:7;19585:23;19581:32;19578:2;;;-1:-1;;19616:12;19578:2;2253:6;2240:20;2265:50;2309:5;2265:50;:::i;19773:286::-;;19899:3;19887:9;19878:7;19874:23;19870:33;19867:2;;;-1:-1;;19906:12;19867:2;19968:75;20035:7;20011:22;19968:75;:::i;20066:301::-;;20199:4;20187:9;20178:7;20174:23;20170:34;20167:2;;;-1:-1;;20207:12;20167:2;20269:82;20343:7;20319:22;20269:82;:::i;20374:734::-;;;;;20584:4;20572:9;20563:7;20559:23;20555:34;20552:2;;;-1:-1;;20592:12;20552:2;20654:82;20728:7;20704:22;20654:82;:::i;:::-;20644:92;;20793:79;20864:7;20773:4;20844:9;20840:22;20793:79;:::i;:::-;20546:562;;20783:89;;-1:-1;;;;20909:4;20950:22;;340:20;;21019:4;21060:22;340:20;;20546:562::o;21115:585::-;;;;21297:4;21285:9;21276:7;21272:23;21268:34;21265:2;;;-1:-1;;21305:12;21265:2;21367:82;21441:7;21417:22;21367:82;:::i;:::-;21357:92;;21486:4;21531:9;21527:22;15485:20;21496:63;;21596:4;21656:9;21652:22;1755:20;1780:48;1822:5;1780:48;:::i;:::-;21606:78;;;;21259:441;;;;;:::o;21707:555::-;;;;21874:4;21862:9;21853:7;21849:23;21845:34;21842:2;;;-1:-1;;21882:12;21842:2;21944:82;22018:7;21994:22;21944:82;:::i;:::-;21934:92;22063:4;22104:22;;15485:20;;-1:-1;22173:4;22214:22;;;15485:20;;21836:426;-1:-1;;;21836:426::o;22269:712::-;;;;;22468:4;22456:9;22447:7;22443:23;22439:34;22436:2;;;-1:-1;;22476:12;22436:2;22538:82;22612:7;22588:22;22538:82;:::i;:::-;22528:92;;22657:4;22702:9;22698:22;15485:20;22667:63;;22767:4;22812:9;22808:22;15485:20;22777:63;;22877:4;22937:9;22933:22;1755:20;1780:48;1822:5;1780:48;:::i;:::-;22430:551;;;;-1:-1;22430:551;;-1:-1;;22430:551::o;22988:297::-;;23119:4;23107:9;23098:7;23094:23;23090:34;23087:2;;;-1:-1;;23127:12;23087:2;4580:6;4565:22;4580:6;4565:22;:::i;:::-;4677:67;4740:3;4716:22;4677:67;:::i;:::-;4659:16;4652:93;4843:63;4902:3;4810:2;4882:9;4878:22;4843:63;:::i;:::-;4810:2;4829:5;4825:16;4818:89;5009:67;5072:3;4976:2;5052:9;5048:22;5009:67;:::i;:::-;4976:2;4995:5;4991:16;4984:93;5185:73;5254:3;5152:2;5234:9;5230:22;5185:73;:::i;:::-;5152:2;5171:5;5167:16;5160:99;5371:76;5443:3;5337;5423:9;5419:22;5371:76;:::i;:::-;5337:3;5357:5;5353:16;5346:102;5559:75;5630:3;5525;5610:9;5606:22;5559:75;:::i;:::-;5525:3;5545:5;5541:16;5534:101;5739:68;5803:3;5705;5783:9;5779:22;5739:68;:::i;:::-;5705:3;5725:5;5721:16;5714:94;5910:66;5972:3;5876;5952:9;5948:22;5910:66;:::i;:::-;5876:3;5896:5;5892:16;5885:92;6042:3;6078:63;6137:3;6042;6117:9;6113:22;6078:63;:::i;:::-;6058:18;;;6051:91;6207:3;6243:49;6288:3;6264:22;;;6243:49;:::i;:::-;6223:18;;;6216:77;6368:3;6404:49;6449:3;6425:22;;;6404:49;:::i;:::-;6384:18;;;6377:77;6536:3;6593:22;;;340:20;6552:18;;;6545:77;6695:3;6752:22;;;15485:20;6711:18;;;6704:77;6848:3;6905:22;;;15485:20;6864:18;;;6857:77;7010:3;7067:22;;;15485:20;7026:18;;;7019:77;7165:3;7222:22;;;15485:20;7181:18;;;7174:77;7320:3;7377:22;;;15485:20;7336:18;;;7329:77;7484:3;7541:22;;;15485:20;7500:18;;;7493:77;7659:3;7716:22;;;15485:20;7675:18;;;7668:77;7828:3;7885:22;;;15485:20;7844:18;;;7837:77;8000:3;8057:22;;;15485:20;8016:18;;;8009:77;8163:3;8220:22;;;15485:20;8179:18;;;8172:77;8323:3;8379:22;;;2719:20;8339:18;;;8332:76;8484:3;8540:22;;;2719:20;8500:18;;;8493:76;8641:3;8697:22;;;2719:20;8657:18;;;8650:76;8797:3;8853:22;;;2719:20;8813:18;;;8806:76;8949:3;9005:22;;;2719:20;8965:18;;;8958:76;9104:3;9160:22;;;2719:20;9120:18;;;9113:76;9253:3;9309:22;;;2719:20;9269:18;;;9262:76;9405:3;9461:22;;;2719:20;9421:18;;;9414:76;9558:3;9614:22;;;2719:20;9574:18;;;9567:76;9715:3;9771:22;;;2719:20;9731:18;;;9724:76;9877:4;9934:22;;;2719:20;9894:18;;;9887:76;10039:4;10096:22;;;2719:20;10056:18;;;10049:76;10189:4;10246:22;;;2719:20;10206:18;;;10199:76;10341:4;10398:22;;;2719:20;10358:18;;;10351:76;10493:4;10550:22;;;2719:20;10510:18;;;10503:76;10647:4;10704:22;;;2719:20;10664:18;;;10657:76;10801:4;10838:70;10904:3;10880:22;;;10838:70;:::i;:::-;10818:18;;;10811:98;10983:4;11020:70;11086:3;11062:22;;;11020:70;:::i;:::-;11011:6;11004:5;11000:18;10993:98;11207:71;11274:3;4580:6;11254:9;11250:22;11207:71;:::i;:::-;11198:6;11191:5;11187:18;11180:99;11389:71;11456:3;11352:4;11436:9;11432:22;11389:71;:::i;:::-;11369:18;;;11362:99;11574:71;11641:3;11537:4;11617:22;;11574:71;:::i;:::-;11565:6;11558:5;11554:18;11547:99;11750:71;11817:3;11713:4;11797:9;11793:22;11750:71;:::i;:::-;11741:6;11730:18;;11723:99;11734:5;23081:204;-1:-1;;;;23081:204::o;23292:290::-;;23420:3;;23408:9;23399:7;23395:23;23391:33;23388:2;;;-1:-1;;23427:12;23388:2;12206:22;23420:3;12206:22;:::i;:::-;12325:74;12395:3;12371:22;12325:74;:::i;:::-;12300:100;;12467:2;12521:22;;;15485:20;12482:16;;;12475:75;12624:2;12678:22;;;15485:20;12639:16;;;12632:75;12776:2;12830:22;;;15485:20;12791:16;;;12784:75;12928:3;12983:22;;;15485:20;12944:16;;;12937:75;13084:3;13139:22;;;15485:20;13100:16;;;13093:75;13238:3;13293:22;;;15485:20;13254:16;;;13247:75;13396:3;13450:22;;;2719:20;13412:16;;;13405:74;13551:3;13607:22;;;2719:20;13567:18;;;13560:76;13703:3;13759:22;;;2719:20;13719:18;;;13712:76;13864:3;13920:22;;;2719:20;13880:18;;;13873:76;14031:3;14087:22;;;2719:20;14047:18;;;14040:76;14198:3;14254:22;;;2719:20;14214:18;;;14207:76;14370:3;14426:22;;;2719:20;14386:18;;;14379:76;14526:3;14582:22;;;2719:20;14542:18;;;14535:76;14684:3;14740:22;;;2719:20;14700:18;;;14693:76;14834:3;14890:22;;;2719:20;14850:18;;;14843:76;14993:3;15049:22;;;2719:20;15009:18;;;15002:76;15147:3;15203:22;;;2719:20;15163:18;;;15156:76;15305:3;15361:22;;;2719:20;15321:18;;;15314:76;;;;-1:-1;12307:16;;23382:200;-1:-1;;23382:200::o;23589:699::-;;;;;23785:3;23773:9;23764:7;23760:23;23756:33;23753:2;;;-1:-1;;23792:12;23753:2;15498:6;15485:20;23844:63;;23962:80;24034:7;23944:2;24014:9;24010:22;23962:80;:::i;25547:162::-;52342:1;52335:5;52332:12;52322:2;;52348:9;52322:2;25631:73;;25625:84::o;38043:370::-;38220:2;38234:47;;;49428:12;;38205:18;;;49832:19;;;38043:370;;38220:2;49282:14;;;;49872;;;;38043:370;24916:260;24941:6;24938:1;24935:13;24916:260;;;25002:13;;25378:37;;49687:14;;;;24449;;;;24963:1;24956:9;24916:260;;;-1:-1;38287:116;;38191:222;-1:-1;;;;;;38191:222::o;38420:210::-;50236:13;;50229:21;25271:34;;38541:2;38526:18;;38512:118::o;38637:222::-;25378:37;;;38764:2;38749:18;;38735:124::o;38866:254::-;39009:2;38994:18;;52458:2;52448:13;;52438:2;;52465:9;52438:2;25803:66;;;38980:140;:::o;39127:270::-;39278:2;39263:18;;52583:1;52573:12;;52563:2;;52589:9;39404:359;39572:2;39557:18;;52696:2;52686:13;;52676:2;;52703:9;52676:2;26146:63;;;39749:2;39734:18;25378:37;39543:220;:::o;39995:310::-;;40142:2;;40163:17;40156:47;26590:5;49428:12;49844:6;40142:2;40131:9;40127:18;49832:19;-1:-1;51939:101;51953:6;51950:1;51947:13;51939:101;;;52020:11;;;;;52014:18;52001:11;;;49872:14;52001:11;51994:39;51968:10;;51939:101;;;52055:6;52052:1;52049:13;52046:2;;;-1:-1;49872:14;52111:6;40131:9;52102:16;;52095:27;52046:2;-1:-1;52227:7;52211:14;-1:-1;;52207:28;26748:39;;;;49872:14;26748:39;;40113:192;-1:-1;;;40113:192::o;40312:416::-;40512:2;40526:47;;;27024:2;40497:18;;;49832:19;27060:34;49872:14;;;27040:55;-1:-1;;;27115:12;;;27108:38;27165:12;;;40483:245::o;40735:416::-;40935:2;40949:47;;;27416:2;40920:18;;;49832:19;27452:34;49872:14;;;27432:55;-1:-1;;;27507:12;;;27500:38;27557:12;;;40906:245::o;41158:416::-;41358:2;41372:47;;;27808:2;41343:18;;;49832:19;27844:34;49872:14;;;27824:55;-1:-1;;;27899:12;;;27892:45;27956:12;;;41329:245::o;41581:416::-;41781:2;41795:47;;;28207:2;41766:18;;;49832:19;28243:29;49872:14;;;28223:50;28292:12;;;41752:245::o;42004:416::-;42204:2;42218:47;;;28543:2;42189:18;;;49832:19;28579:34;49872:14;;;28559:55;-1:-1;;;28634:12;;;28627:42;28688:12;;;42175:245::o;42427:416::-;42627:2;42641:47;;;28939:2;42612:18;;;49832:19;28975:34;49872:14;;;28955:55;-1:-1;;;29030:12;;;29023:25;29067:12;;;42598:245::o;42850:416::-;43050:2;43064:47;;;29318:2;43035:18;;;49832:19;29354:34;49872:14;;;29334:55;-1:-1;;;29409:12;;;29402:44;29465:12;;;43021:245::o;43273:416::-;43473:2;43487:47;;;29716:2;43458:18;;;49832:19;29752:34;49872:14;;;29732:55;-1:-1;;;29807:12;;;29800:31;29850:12;;;43444:245::o;43696:416::-;43896:2;43910:47;;;30101:2;43881:18;;;49832:19;30137:34;49872:14;;;30117:55;-1:-1;;;30192:12;;;30185:37;30241:12;;;43867:245::o;44119:416::-;44319:2;44333:47;;;30492:2;44304:18;;;49832:19;30528:34;49872:14;;;30508:55;30597:27;30583:12;;;30576:49;30644:12;;;44290:245::o;44542:416::-;44742:2;44756:47;;;30895:2;44727:18;;;49832:19;30931:34;49872:14;;;30911:55;-1:-1;;;30986:12;;;30979:41;31039:12;;;44713:245::o;44965:416::-;45165:2;45179:47;;;31290:2;45150:18;;;49832:19;31326:34;49872:14;;;31306:55;-1:-1;;;31381:12;;;31374:31;31424:12;;;45136:245::o;45388:416::-;45588:2;45602:47;;;31675:2;45573:18;;;49832:19;31711:34;49872:14;;;31691:55;-1:-1;;;31766:12;;;31759:46;31824:12;;;45559:245::o;45811:416::-;46011:2;46025:47;;;32075:2;45996:18;;;49832:19;32111:34;49872:14;;;32091:55;-1:-1;;;32166:12;;;32159:31;32209:12;;;45982:245::o;46234:416::-;46434:2;46448:47;;;32460:2;46419:18;;;49832:19;32496:34;49872:14;;;32476:55;-1:-1;;;32551:12;;;32544:30;32593:12;;;46405:245::o;46657:416::-;46857:2;46871:47;;;32844:2;46842:18;;;49832:19;32880:34;49872:14;;;32860:55;32949:25;32935:12;;;32928:47;32994:12;;;46828:245::o;47080:416::-;47280:2;47294:47;;;33245:2;47265:18;;;49832:19;33281:34;49872:14;;;33261:55;33350:34;33336:12;;;33329:56;-1:-1;;;33405:12;;;33398:29;33446:12;;;47251:245::o;47503:416::-;47703:2;47717:47;;;33697:2;47688:18;;;49832:19;33733:34;49872:14;;;33713:55;-1:-1;;;33788:12;;;33781:28;33828:12;;;47674:245::o;47926:416::-;48126:2;48140:47;;;34079:2;48111:18;;;49832:19;34115:34;49872:14;;;34095:55;-1:-1;;;34170:12;;;34163:28;34210:12;;;48097:245::o;48349:319::-;;48524:3;48513:9;48509:19;48501:27;;34524:86;34595:14;34501:16;34495:23;34524:86;:::i;:::-;34695:4;34684:16;;;34678:23;34755:14;;;25378:37;34862:4;34851:16;;;34845:23;34922:14;;;25378:37;35024:4;35013:16;;;35007:23;35084:14;;;25378:37;35186:4;35175:16;;;35169:23;35246:14;;;25378:37;35351:4;35340:16;;;35334:23;35411:14;;;25378:37;35514:4;35503:16;;;35497:23;35574:14;;;25378:37;35681:4;35670:16;;;35664:23;35739:14;;;25378:37;35844:6;35833:18;;;35827:25;35904:16;;;25378:37;36006:6;35995:18;;;35989:25;36066:16;;;25378:37;36177:6;36166:18;;;36160:25;36237:16;;;25378:37;36354:6;36343:18;;;36337:25;36414:16;;;25378:37;36531:6;36520:18;;;36514:25;36591:16;;;25378:37;36713:6;36702:18;;;36696:25;36773:16;;;25378:37;36879:6;36868:18;;;36862:25;36939:16;;;25378:37;37047:6;37036:18;;;37030:25;37107:16;;;25378:37;37207:6;37196:18;;;37190:25;37267:16;;;25378:37;37376:6;37365:18;;;37359:25;37436:16;;;25378:37;37540:6;37529:18;;;37523:25;37600:16;;;25378:37;37708:6;37697:18;;;37691:25;37768:16;;;;25378:37;;;;48495:173;:::o;48904:256::-;48966:2;48960:9;48992:17;;;49067:18;49052:34;;49088:22;;;49049:62;49046:2;;;49124:1;;49114:12;49046:2;48966;49133:22;48944:216;;-1:-1;48944:216::o;52850:111::-;52931:5;50236:13;50229:21;52909:5;52906:32;52896:2;;52952:1;;52942:12;52896:2;52890:71;:::o;53220:108::-;53303:1;53296:5;53293:12;53283:2;;53319:1;;53309:12;53335:119;53429:1;53422:5;53419:12;53409:2;;53445:1;;53435:12;53953:110;54037:2;54030:5;54027:13;54017:2;;54054:1;;54044:12;54293:111;54379:1;54372:5;54369:12;54359:2;;54395:1;;54385:12",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"../../Core/Core.sol\";\nimport \"./IPAMEngine.sol\";\nimport \"./PAMSTF.sol\";\nimport \"./PAMPOF.sol\";\n\n\n/**\n * @title PAMEngine\n * @notice Inherits from BaseEngine by implementing STFs, POFs according to the ACTUS standard for a PAM contract\n * @dev All numbers except unix timestamp are represented as multiple of 10 ** 18\n */\ncontract PAMEngine is Core, PAMSTF, PAMPOF, IPAMEngine {\n\n    function contractType() external pure override returns (ContractType) {\n        return ContractType.PAM;\n    }\n\n    /**\n     * Applys an event to the current state of a contract and returns the resulting contract state.\n     * @param terms terms of the contract\n     * @param state current state of the contract\n     * @param _event event to be applied to the contract state\n     * @param externalData external data needed for STF evaluation (e.g. rate for RR events)\n     * @return the resulting contract state\n     */\n    function computeStateForEvent(\n        PAMTerms calldata terms,\n        State calldata state,\n        bytes32 _event,\n        bytes32 externalData\n    )\n        external\n        pure\n        override\n        returns (State memory)\n    {\n        return stateTransitionFunction(\n            terms,\n            state,\n            _event,\n            externalData\n        );\n    }\n\n    /**\n     * Evaluates the payoff for an event under the current state of the contract.\n     * @param terms terms of the contract\n     * @param state current state of the contract\n     * @param _event event for which the payoff should be evaluated\n     * @param externalData external data needed for POF evaluation (e.g. fxRate)\n     * @return the payoff of the event\n     */\n    function computePayoffForEvent(\n        PAMTerms calldata terms,\n        State calldata state,\n        bytes32 _event,\n        bytes32 externalData\n    )\n        external\n        pure\n        override\n        returns (int256)\n    {\n        // if alternative settlementCurrency is set then apply fxRate to payoff\n        if (terms.settlementCurrency != address(0) && terms.currency != terms.settlementCurrency) {\n            return payoffFunction(\n                terms,\n                state,\n                _event,\n                externalData\n            ).floatMult(int256(externalData));\n        }\n\n        return payoffFunction(\n            terms,\n            state,\n            _event,\n            externalData\n        );\n    }\n\n    /**\n     * @notice Initialize contract state space based on the contract terms.\n     * @param terms terms of the contract\n     * @return the initial state of the contract\n     */\n    function computeInitialState(PAMTerms calldata terms)\n        external\n        pure\n        override\n        returns (State memory)\n    {\n        State memory state;\n\n        state.contractPerformance = ContractPerformance.PF;\n        state.notionalScalingMultiplier = ONE_POINT_ZERO;\n        state.interestScalingMultiplier = ONE_POINT_ZERO;\n        state.statusDate = terms.statusDate;\n        state.maturityDate = terms.maturityDate;\n        state.notionalPrincipal = terms.notionalPrincipal;\n        state.nominalInterestRate = terms.nominalInterestRate;\n        state.accruedInterest = terms.accruedInterest;\n        state.feeAccrued = terms.feeAccrued;\n\n        return state;\n    }\n\n    /**\n     * @notice Computes a schedule segment of non-cyclic contract events based on the contract terms\n     * and the specified timestamps.\n     * @param terms terms of the contract\n     * @param segmentStart start timestamp of the segment\n     * @param segmentEnd end timestamp of the segement\n     * @return segment of the non-cyclic schedule\n     */\n    function computeNonCyclicScheduleSegment(\n        PAMTerms calldata terms,\n        uint256 segmentStart,\n        uint256 segmentEnd\n    )\n        external\n        pure\n        override\n        returns (bytes32[] memory)\n    {\n        bytes32[MAX_EVENT_SCHEDULE_SIZE] memory events;\n        uint16 index;\n\n        // initial exchange\n        if (terms.purchaseDate == 0 && isInSegment(terms.initialExchangeDate, segmentStart, segmentEnd)) {\n            events[index] = encodeEvent(EventType.IED, terms.initialExchangeDate);\n            index++;\n        }\n\n        // purchase\n        if (terms.purchaseDate != 0) {\n            if (isInSegment(terms.purchaseDate, segmentStart, segmentEnd)) {\n                events[index] = encodeEvent(EventType.PRD, terms.purchaseDate);\n                index++;\n            }\n        }\n\n        // principal redemption\n        if (isInSegment(terms.maturityDate, segmentStart, segmentEnd)) {\n            events[index] = encodeEvent(EventType.MD, terms.maturityDate);\n            index++;\n        }\n\n        // remove null entries from returned array\n        bytes32[] memory schedule = new bytes32[](index);\n        for (uint256 i = 0; i < index; i++) {\n            schedule[i] = events[i];\n        }\n\n        return schedule;\n    }\n\n    /**\n     * @notice Computes a schedule segment of cyclic contract events based on the contract terms\n     * and the specified timestamps.\n     * @param terms terms of the contract\n     * @param segmentStart start timestamp of the segment\n     * @param segmentEnd end timestamp of the segement\n     * @param eventType eventType of the cyclic schedule\n     * @return event schedule segment\n     */\n    function computeCyclicScheduleSegment(\n        PAMTerms calldata terms,\n        uint256 segmentStart,\n        uint256 segmentEnd,\n        EventType eventType\n    )\n        external\n        pure\n        override\n        returns(bytes32[] memory)\n    {\n        bytes32[MAX_EVENT_SCHEDULE_SIZE] memory events;\n        uint256 index;\n\n        // IP\n        // interest payment related (starting with PRANX interest is paid following the PR schedule)\n        if (eventType == EventType.IP) {\n            if (terms.cycleAnchorDateOfInterestPayment != 0) {\n                uint256[MAX_CYCLE_SIZE] memory interestPaymentSchedule = computeDatesFromCycleSegment(\n                    terms.cycleAnchorDateOfInterestPayment,\n                    terms.maturityDate,\n                    terms.cycleOfInterestPayment,\n                    terms.endOfMonthConvention,\n                    true,\n                    segmentStart,\n                    segmentEnd\n                );\n                for (uint8 i = 0; i < MAX_CYCLE_SIZE; i++) {\n                    if (interestPaymentSchedule[i] == 0) break;\n                    if (interestPaymentSchedule[i] <= terms.capitalizationEndDate) continue;\n                    if (isInSegment(interestPaymentSchedule[i], segmentStart, segmentEnd) == false) continue;\n                    events[index] = encodeEvent(EventType.IP, interestPaymentSchedule[i]);\n                    index++;\n                }\n            }\n        }\n\n        // IPCI\n        if (eventType == EventType.IPCI) {\n            if (terms.cycleAnchorDateOfInterestPayment != 0 && terms.capitalizationEndDate != 0) {\n                IPS memory cycleOfInterestCapitalization = terms.cycleOfInterestPayment;\n                cycleOfInterestCapitalization.s = S.SHORT;\n                uint256[MAX_CYCLE_SIZE] memory interestPaymentSchedule = computeDatesFromCycleSegment(\n                    terms.cycleAnchorDateOfInterestPayment,\n                    terms.capitalizationEndDate,\n                    cycleOfInterestCapitalization,\n                    terms.endOfMonthConvention,\n                    true,\n                    segmentStart,\n                    segmentEnd\n                );\n                for (uint8 i = 0; i < MAX_CYCLE_SIZE; i++) {\n                    if (interestPaymentSchedule[i] == 0) break;\n                    if (isInSegment(interestPaymentSchedule[i], segmentStart, segmentEnd) == false) continue;\n                    events[index] = encodeEvent(EventType.IPCI, interestPaymentSchedule[i]);\n                    index++;\n                }\n            }\n        }\n\n        // rate reset\n        if (eventType == EventType.RR) {\n            if (terms.cycleAnchorDateOfRateReset != 0) {\n                uint256[MAX_CYCLE_SIZE] memory rateResetSchedule = computeDatesFromCycleSegment(\n                    terms.cycleAnchorDateOfRateReset,\n                    terms.maturityDate,\n                    terms.cycleOfRateReset,\n                    terms.endOfMonthConvention,\n                    false,\n                    segmentStart,\n                    segmentEnd\n                );\n                for (uint8 i = 0; i < MAX_CYCLE_SIZE; i++) {\n                    if (rateResetSchedule[i] == 0) break;\n                    if (isInSegment(rateResetSchedule[i], segmentStart, segmentEnd) == false) continue;\n                    events[index] = encodeEvent(EventType.RR, rateResetSchedule[i]);\n                    index++;\n                }\n            }\n            // ... nextRateReset\n        }\n\n        // fees\n        if (eventType == EventType.FP) {\n            if (terms.cycleAnchorDateOfFee != 0) {\n                uint256[MAX_CYCLE_SIZE] memory feeSchedule = computeDatesFromCycleSegment(\n                    terms.cycleAnchorDateOfFee,\n                    terms.maturityDate,\n                    terms.cycleOfFee,\n                    terms.endOfMonthConvention,\n                    true,\n                    segmentStart,\n                    segmentEnd\n                );\n                for (uint8 i = 0; i < MAX_CYCLE_SIZE; i++) {\n                    if (feeSchedule[i] == 0) break;\n                    if (isInSegment(feeSchedule[i], segmentStart, segmentEnd) == false) continue;\n                    events[index] = encodeEvent(EventType.FP, feeSchedule[i]);\n                    index++;\n                }\n            }\n        }\n\n        // scaling\n        if (eventType == EventType.SC) {\n            if ((terms.scalingEffect != ScalingEffect._000) && terms.cycleAnchorDateOfScalingIndex != 0) {\n                uint256[MAX_CYCLE_SIZE] memory scalingSchedule = computeDatesFromCycleSegment(\n                    terms.cycleAnchorDateOfScalingIndex,\n                    terms.maturityDate,\n                    terms.cycleOfScalingIndex,\n                    terms.endOfMonthConvention,\n                    true,\n                    segmentStart,\n                    segmentEnd\n                );\n                for (uint8 i = 0; i < MAX_CYCLE_SIZE; i++) {\n                    if (scalingSchedule[i] == 0) break;\n                    if (isInSegment(scalingSchedule[i], segmentStart, segmentEnd) == false) continue;\n                    events[index] = encodeEvent(EventType.SC, scalingSchedule[i]);\n                    index++;\n                }\n            }\n        }\n\n        // remove null entries from returned array\n        bytes32[] memory schedule = new bytes32[](index);\n        for (uint256 i = 0; i < index; i++) {\n            schedule[i] = events[i];\n        }\n\n        return schedule;\n    }\n\n    /**\n     * @notice Computes a schedule segment of cyclic contract events based on the contract terms\n     * and the specified timestamps.\n     * @param terms terms of the contract\n     * @param lastScheduleTime last occurrence of cyclic event\n     * @param eventType eventType of the cyclic schedule\n     * @return event schedule segment\n     */\n    function computeNextCyclicEvent(\n        PAMTerms calldata terms,\n        uint256 lastScheduleTime,\n        EventType eventType\n    )\n        external\n        pure\n        override\n        returns(bytes32)\n    {\n        // IP\n        // interest payment related (starting with PRANX interest is paid following the PR schedule)\n        if (eventType == EventType.IP) {\n            if (terms.cycleOfInterestPayment.isSet == true && terms.cycleAnchorDateOfInterestPayment != 0) {\n                uint256 nextInterestPaymentDate = computeNextCycleDateFromPrecedingDate(\n                    terms.cycleOfInterestPayment,\n                    terms.endOfMonthConvention,\n                    terms.cycleAnchorDateOfInterestPayment,\n                    lastScheduleTime\n                );\n                if (nextInterestPaymentDate == 0) return bytes32(0);\n                if (nextInterestPaymentDate <= terms.capitalizationEndDate) return bytes32(0);\n                return encodeEvent(EventType.IP, nextInterestPaymentDate);\n            }\n        }\n\n        // IPCI\n        if (eventType == EventType.IPCI) {\n            if (terms.cycleAnchorDateOfInterestPayment != 0 && terms.capitalizationEndDate != 0) {\n                IPS memory cycleOfInterestCapitalization = terms.cycleOfInterestPayment;\n                cycleOfInterestCapitalization.s = S.SHORT;\n                uint256 nextInterestCapitalizationDate = computeNextCycleDateFromPrecedingDate(\n                    cycleOfInterestCapitalization,\n                    terms.endOfMonthConvention,\n                    terms.cycleAnchorDateOfInterestPayment,\n                    lastScheduleTime\n                );\n                if (nextInterestCapitalizationDate == 0) return bytes32(0);\n                return encodeEvent(EventType.IPCI, nextInterestCapitalizationDate);\n            }\n        }\n\n        // rate reset\n        if (eventType == EventType.RR) {\n            if (terms.cycleAnchorDateOfRateReset != 0) {\n                uint256 nextRateResetDate = computeNextCycleDateFromPrecedingDate(\n                    terms.cycleOfRateReset,\n                    terms.endOfMonthConvention,\n                    terms.cycleAnchorDateOfRateReset,\n                    lastScheduleTime\n                );\n                if (nextRateResetDate == 0) return bytes32(0);\n                return encodeEvent(EventType.RR, nextRateResetDate);\n            }\n            // ... nextRateReset\n        }\n\n        // fees\n        if (eventType == EventType.FP) {\n            if (terms.cycleAnchorDateOfFee != 0) {\n                uint256 nextFeeDate = computeNextCycleDateFromPrecedingDate(\n                    terms.cycleOfFee,\n                    terms.endOfMonthConvention,\n                    terms.cycleAnchorDateOfFee,\n                    lastScheduleTime\n                );\n                if (nextFeeDate == 0) return bytes32(0);\n                return encodeEvent(EventType.FP, nextFeeDate);\n            }\n        }\n\n        // scaling\n        if (eventType == EventType.SC) {\n            if ((terms.scalingEffect != ScalingEffect._000) && terms.cycleAnchorDateOfScalingIndex != 0) {\n                uint256 nextScalingDate = computeNextCycleDateFromPrecedingDate(\n                    terms.cycleOfScalingIndex,\n                    terms.endOfMonthConvention,\n                    terms.cycleAnchorDateOfScalingIndex,\n                    lastScheduleTime\n                );\n                if (nextScalingDate == 0) return bytes32(0);\n                return encodeEvent(EventType.SC, nextScalingDate);\n            }\n        }\n\n        return bytes32(0);\n    }\n\n    /**\n     * @notice Verifies that the provided event is still scheduled under the terms, the current state of the\n     * contract and the current state of the underlying.\n     * param _event event for which to check if its still scheduled\n     * param terms terms of the contract\n     * param state current state of the contract\n     * param hasUnderlying boolean indicating whether the contract has an underlying contract\n     * param underlyingState state of the underlying (empty state object if non-existing)\n     * @return boolean indicating whether event is still scheduled\n     */\n    function isEventScheduled(\n        bytes32 /* _event */,\n        PAMTerms calldata /* terms */,\n        State calldata /* state */,\n        bool /* hasUnderlying */,\n        State calldata /* underlyingState */\n    )\n        external\n        pure\n        override\n        returns (bool)\n    {\n        return true;\n    }\n\n    /**\n     * @notice Implements abstract method which is defined in BaseEngine.\n     * Applies an event to the current state of the contract and returns the resulting state.\n     * The inheriting Engine contract has to map the events type to the designated STF.\n     * todo Annuity calculator for RR/RRF events, IPCB events and ICB state variable\n     * @param terms terms of the contract\n     * @param state current state of the contract\n     * @param _event event for which to evaluate the next state for\n     * @param externalData external data needed for STF evaluation (e.g. rate for RR events)\n     * @return the resulting contract state\n     */\n    function stateTransitionFunction(\n        PAMTerms memory terms,\n        State memory state,\n        bytes32 _event,\n        bytes32 externalData\n    )\n        internal\n        pure\n        returns (State memory)\n    {\n        (EventType eventType, uint256 scheduleTime) = decodeEvent(_event);\n\n        /*\n         * Note:\n         * Not supported: PRD (Purchase) events\n         */\n\n        if (eventType == EventType.AD) return STF_PAM_AD(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.FP) return STF_PAM_FP(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.IED) return STF_PAM_IED(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.IPCI) return STF_PAM_IPCI(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.IP) return STF_PAM_IP(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.PP) return STF_PAM_PP(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.MD) return STF_PAM_MD(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.PY) return STF_PAM_PY(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.RRF) return STF_PAM_RRF(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.RR) return STF_PAM_RR(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.SC) return STF_PAM_SC(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.TD) return STF_PAM_TD(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.CE)  return STF_PAM_CE(terms, state, scheduleTime, externalData);\n\n        revert(\"PAMEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND\");\n    }\n\n    /**\n     * @notice Implements abstract method which is defined in BaseEngine.\n     * Computes the payoff for an event under the current state of the contract.\n     * The inheriting Engine contract has to map the events type to the designated POF.\n     * todo IPCB events and Icb state variable, Icb state variable updates in IP-paying events\n     * @param terms terms of the contract\n     * @param state current state of the contract\n     * @param _event event for which the payoff should be evaluated\n     * @param externalData external data needed for POF evaluation (e.g. fxRate)\n     * @return the payoff of the event\n     */\n    function payoffFunction(\n        PAMTerms memory terms,\n        State memory state,\n        bytes32 _event,\n        bytes32 externalData\n    )\n        internal\n        pure\n        returns (int256)\n    {\n        (EventType eventType, uint256 scheduleTime) = decodeEvent(_event);\n\n        /*\n         * Note: PAM contracts don't have IPCB and PR events.\n         * Not supported: PRD (Purchase) events\n         */\n\n        if (eventType == EventType.AD) return 0;\n        if (eventType == EventType.IPCI) return 0;\n        if (eventType == EventType.RRF) return 0;\n        if (eventType == EventType.RR) return 0;\n        if (eventType == EventType.SC) return 0;\n        if (eventType == EventType.CE) return 0;\n        if (eventType == EventType.FP) return POF_PAM_FP(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.IED) return POF_PAM_IED(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.IP) return POF_PAM_IP(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.PP) return POF_PAM_PP(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.MD) return POF_PAM_MD(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.PY) return POF_PAM_PY(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.TD) return POF_PAM_TD(terms, state, scheduleTime, externalData);\n\n        revert(\"PAMEngine.payoffFunction: ATTRIBUTE_NOT_FOUND\");\n    }\n}\n",
  "sourcePath": "@atpar/actus-solidity/contracts/Engines/PAM/PAMEngine.sol",
  "ast": {
    "absolutePath": "@atpar/actus-solidity/contracts/Engines/PAM/PAMEngine.sol",
    "exportedSymbols": {
      "PAMEngine": [
        33930
      ]
    },
    "id": 33931,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 32535,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:103"
      },
      {
        "id": 32536,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:103"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Core.sol",
        "file": "../../Core/Core.sol",
        "id": 32537,
        "nodeType": "ImportDirective",
        "scope": 33931,
        "sourceUnit": 24036,
        "src": "101:29:103",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/PAM/IPAMEngine.sol",
        "file": "./IPAMEngine.sol",
        "id": 32538,
        "nodeType": "ImportDirective",
        "scope": 33931,
        "sourceUnit": 32534,
        "src": "131:26:103",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/PAM/PAMSTF.sol",
        "file": "./PAMSTF.sol",
        "id": 32539,
        "nodeType": "ImportDirective",
        "scope": 33931,
        "sourceUnit": 35694,
        "src": "158:22:103",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/PAM/PAMPOF.sol",
        "file": "./PAMPOF.sol",
        "id": 32540,
        "nodeType": "ImportDirective",
        "scope": 33931,
        "sourceUnit": 34332,
        "src": "181:22:103",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 32542,
              "name": "Core",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24035,
              "src": "452:4:103",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Core_$24035",
                "typeString": "contract Core"
              }
            },
            "id": 32543,
            "nodeType": "InheritanceSpecifier",
            "src": "452:4:103"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 32544,
              "name": "PAMSTF",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 35693,
              "src": "458:6:103",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_PAMSTF_$35693",
                "typeString": "contract PAMSTF"
              }
            },
            "id": 32545,
            "nodeType": "InheritanceSpecifier",
            "src": "458:6:103"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 32546,
              "name": "PAMPOF",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 34331,
              "src": "466:6:103",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_PAMPOF_$34331",
                "typeString": "contract PAMPOF"
              }
            },
            "id": 32547,
            "nodeType": "InheritanceSpecifier",
            "src": "466:6:103"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 32548,
              "name": "IPAMEngine",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 32533,
              "src": "474:10:103",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IPAMEngine_$32533",
                "typeString": "contract IPAMEngine"
              }
            },
            "id": 32549,
            "nodeType": "InheritanceSpecifier",
            "src": "474:10:103"
          }
        ],
        "contractDependencies": [
          22465,
          23277,
          23340,
          23895,
          24013,
          24035,
          24668,
          24758,
          24885,
          24931,
          32432,
          32533,
          34331,
          35693
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 32541,
          "nodeType": "StructuredDocumentation",
          "src": "206:223:103",
          "text": " @title PAMEngine\n @notice Inherits from BaseEngine by implementing STFs, POFs according to the ACTUS standard for a PAM contract\n @dev All numbers except unix timestamp are represented as multiple of 10 ** 18"
        },
        "fullyImplemented": true,
        "id": 33930,
        "linearizedBaseContracts": [
          33930,
          32533,
          32432,
          34331,
          35693,
          24035,
          24931,
          24668,
          24885,
          24013,
          23895,
          23340,
          22465,
          24758,
          23277
        ],
        "name": "PAMEngine",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "baseFunctions": [
              32431
            ],
            "body": {
              "id": 32558,
              "nodeType": "Block",
              "src": "562:40:103",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 32555,
                      "name": "ContractType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22559,
                      "src": "579:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                        "typeString": "type(enum ContractType)"
                      }
                    },
                    "id": 32556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "PAM",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "579:16:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractType_$22559",
                      "typeString": "enum ContractType"
                    }
                  },
                  "functionReturnParameters": 32554,
                  "id": 32557,
                  "nodeType": "Return",
                  "src": "572:23:103"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "cb2ef6f7",
            "id": 32559,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contractType",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 32551,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "530:8:103"
            },
            "parameters": {
              "id": 32550,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "513:2:103"
            },
            "returnParameters": {
              "id": 32554,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32553,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32559,
                  "src": "548:12:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ContractType_$22559",
                    "typeString": "enum ContractType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32552,
                    "name": "ContractType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22559,
                    "src": "548:12:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractType_$22559",
                      "typeString": "enum ContractType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "547:14:103"
            },
            "scope": 33930,
            "src": "492:110:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32462
            ],
            "body": {
              "id": 32581,
              "nodeType": "Block",
              "src": "1251:141:103",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 32575,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32562,
                        "src": "1305:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 32576,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32564,
                        "src": "1324:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 32577,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32566,
                        "src": "1343:6:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 32578,
                        "name": "externalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32568,
                        "src": "1363:12:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 32574,
                      "name": "stateTransitionFunction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33776,
                      "src": "1268:23:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                        "typeString": "function (struct PAMTerms memory,struct State memory,bytes32,bytes32) pure returns (struct State memory)"
                      }
                    },
                    "id": 32579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1268:117:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 32573,
                  "id": 32580,
                  "nodeType": "Return",
                  "src": "1261:124:103"
                }
              ]
            },
            "documentation": {
              "id": 32560,
              "nodeType": "StructuredDocumentation",
              "src": "608:403:103",
              "text": " Applys an event to the current state of a contract and returns the resulting contract state.\n @param terms terms of the contract\n @param state current state of the contract\n @param _event event to be applied to the contract state\n @param externalData external data needed for STF evaluation (e.g. rate for RR events)\n @return the resulting contract state"
            },
            "functionSelector": "6942d1a8",
            "id": 32582,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeStateForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 32570,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1207:8:103"
            },
            "parameters": {
              "id": 32569,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32562,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32582,
                  "src": "1055:23:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32561,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "1055:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32564,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32582,
                  "src": "1088:20:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32563,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1088:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32566,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32582,
                  "src": "1118:14:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 32565,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1118:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32568,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32582,
                  "src": "1142:20:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 32567,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1142:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1045:123:103"
            },
            "returnParameters": {
              "id": 32573,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32572,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32582,
                  "src": "1233:12:103",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32571,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1233:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1232:14:103"
            },
            "scope": 33930,
            "src": "1016:376:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32476
            ],
            "body": {
              "id": 32632,
              "nodeType": "Block",
              "src": "2006:504:103",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 32609,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 32603,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 32597,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32585,
                          "src": "2100:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                            "typeString": "struct PAMTerms calldata"
                          }
                        },
                        "id": 32598,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "settlementCurrency",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22939,
                        "src": "2100:24:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 32601,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2136:1:103",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 32600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2128:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 32599,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2128:7:103",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 32602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2128:10:103",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "2100:38:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 32608,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 32604,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32585,
                          "src": "2142:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                            "typeString": "struct PAMTerms calldata"
                          }
                        },
                        "id": 32605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "currency",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22937,
                        "src": "2142:14:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 32606,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32585,
                          "src": "2160:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                            "typeString": "struct PAMTerms calldata"
                          }
                        },
                        "id": 32607,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "settlementCurrency",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22939,
                        "src": "2160:24:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "2142:42:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2100:84:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 32624,
                  "nodeType": "IfStatement",
                  "src": "2096:282:103",
                  "trueBody": {
                    "id": 32623,
                    "nodeType": "Block",
                    "src": "2186:192:103",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 32619,
                                  "name": "externalData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32591,
                                  "src": "2353:12:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 32618,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2346:6:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int256_$",
                                  "typeString": "type(int256)"
                                },
                                "typeName": {
                                  "id": 32617,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2346:6:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 32620,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2346:20:103",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 32611,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32585,
                                  "src": "2239:5:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                    "typeString": "struct PAMTerms calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 32612,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32587,
                                  "src": "2262:5:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                                    "typeString": "struct State calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 32613,
                                  "name": "_event",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32589,
                                  "src": "2285:6:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 32614,
                                  "name": "externalData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32591,
                                  "src": "2309:12:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                    "typeString": "struct PAMTerms calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                                    "typeString": "struct State calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 32610,
                                "name": "payoffFunction",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33929,
                                "src": "2207:14:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                                  "typeString": "function (struct PAMTerms memory,struct State memory,bytes32,bytes32) pure returns (int256)"
                                }
                              },
                              "id": 32615,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2207:128:103",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 32616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "2207:138:103",
                            "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": 32621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2207:160:103",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 32596,
                        "id": 32622,
                        "nodeType": "Return",
                        "src": "2200:167:103"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 32626,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32585,
                        "src": "2423:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 32627,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32587,
                        "src": "2442:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 32628,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32589,
                        "src": "2461:6:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 32629,
                        "name": "externalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32591,
                        "src": "2481:12:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 32625,
                      "name": "payoffFunction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33929,
                      "src": "2395:14:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                        "typeString": "function (struct PAMTerms memory,struct State memory,bytes32,bytes32) pure returns (int256)"
                      }
                    },
                    "id": 32630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2395:108:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 32596,
                  "id": 32631,
                  "nodeType": "Return",
                  "src": "2388:115:103"
                }
              ]
            },
            "documentation": {
              "id": 32583,
              "nodeType": "StructuredDocumentation",
              "src": "1398:373:103",
              "text": " Evaluates the payoff for an event under the current state of the contract.\n @param terms terms of the contract\n @param state current state of the contract\n @param _event event for which the payoff should be evaluated\n @param externalData external data needed for POF evaluation (e.g. fxRate)\n @return the payoff of the event"
            },
            "functionSelector": "5ada17d8",
            "id": 32633,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computePayoffForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 32593,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1968:8:103"
            },
            "parameters": {
              "id": 32592,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32585,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32633,
                  "src": "1816:23:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32584,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "1816:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32587,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32633,
                  "src": "1849:20:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32586,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1849:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32589,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32633,
                  "src": "1879:14:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 32588,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1879:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32591,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32633,
                  "src": "1903:20:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 32590,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1903:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1806:123:103"
            },
            "returnParameters": {
              "id": 32596,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32595,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32633,
                  "src": "1994:6:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 32594,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1994:6:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1993:8:103"
            },
            "scope": 33930,
            "src": "1776:734:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32448
            ],
            "body": {
              "id": 32708,
              "nodeType": "Block",
              "src": "2835:551:103",
              "statements": [
                {
                  "assignments": [
                    32643
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32643,
                      "mutability": "mutable",
                      "name": "state",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 32708,
                      "src": "2845:18:103",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 32642,
                        "name": "State",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22673,
                        "src": "2845:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                          "typeString": "struct State"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 32644,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2845:18:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32645,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32643,
                        "src": "2874:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 32647,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "contractPerformance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22634,
                      "src": "2874:25:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32648,
                        "name": "ContractPerformance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22513,
                        "src": "2902:19:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                          "typeString": "type(enum ContractPerformance)"
                        }
                      },
                      "id": 32649,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2902:22:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "src": "2874:50:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                      "typeString": "enum ContractPerformance"
                    }
                  },
                  "id": 32651,
                  "nodeType": "ExpressionStatement",
                  "src": "2874:50:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32656,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32652,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32643,
                        "src": "2934:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 32654,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "notionalScalingMultiplier",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22658,
                      "src": "2934:31:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 32655,
                      "name": "ONE_POINT_ZERO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22458,
                      "src": "2968:14:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "2934:48:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 32657,
                  "nodeType": "ExpressionStatement",
                  "src": "2934:48:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32658,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32643,
                        "src": "2992:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 32660,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "interestScalingMultiplier",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22656,
                      "src": "2992:31:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 32661,
                      "name": "ONE_POINT_ZERO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22458,
                      "src": "3026:14:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "2992:48:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 32663,
                  "nodeType": "ExpressionStatement",
                  "src": "2992:48:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32664,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32643,
                        "src": "3050:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 32666,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "3050:16:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32667,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32636,
                        "src": "3069:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      "id": 32668,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22945,
                      "src": "3069:16:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3050:35:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 32670,
                  "nodeType": "ExpressionStatement",
                  "src": "3050:35:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32676,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32671,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32643,
                        "src": "3095:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 32673,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "maturityDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22640,
                      "src": "3095:18:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32674,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32636,
                        "src": "3116:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      "id": 32675,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "maturityDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22949,
                      "src": "3116:18:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3095:39:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 32677,
                  "nodeType": "ExpressionStatement",
                  "src": "3095:39:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32683,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32678,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32643,
                        "src": "3144:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 32680,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "notionalPrincipal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22648,
                      "src": "3144:23:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32681,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32636,
                        "src": "3170:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      "id": 32682,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "notionalPrincipal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22963,
                      "src": "3170:23:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3144:49:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 32684,
                  "nodeType": "ExpressionStatement",
                  "src": "3144:49:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32685,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32643,
                        "src": "3203:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 32687,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nominalInterestRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22654,
                      "src": "3203:25:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32688,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32636,
                        "src": "3231:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      "id": 32689,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nominalInterestRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22965,
                      "src": "3231:25:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3203:53:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 32691,
                  "nodeType": "ExpressionStatement",
                  "src": "3203:53:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32697,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32692,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32643,
                        "src": "3266:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 32694,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "3266:21:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32695,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32636,
                        "src": "3290:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      "id": 32696,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22967,
                      "src": "3290:21:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3266:45:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 32698,
                  "nodeType": "ExpressionStatement",
                  "src": "3266:45:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32704,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32699,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32643,
                        "src": "3321:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 32701,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "3321:16:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32702,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32636,
                        "src": "3340:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      "id": 32703,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22977,
                      "src": "3340:16:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3321:35:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 32705,
                  "nodeType": "ExpressionStatement",
                  "src": "3321:35:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32706,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 32643,
                    "src": "3374:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 32641,
                  "id": 32707,
                  "nodeType": "Return",
                  "src": "3367:12:103"
                }
              ]
            },
            "documentation": {
              "id": 32634,
              "nodeType": "StructuredDocumentation",
              "src": "2516:178:103",
              "text": " @notice Initialize contract state space based on the contract terms.\n @param terms terms of the contract\n @return the initial state of the contract"
            },
            "functionSelector": "4c7c3fd6",
            "id": 32709,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeInitialState",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 32638,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2791:8:103"
            },
            "parameters": {
              "id": 32637,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32636,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32709,
                  "src": "2728:23:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32635,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "2728:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2727:25:103"
            },
            "returnParameters": {
              "id": 32641,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32640,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32709,
                  "src": "2817:12:103",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32639,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2817:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2816:14:103"
            },
            "scope": 33930,
            "src": "2699:687:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32489
            ],
            "body": {
              "id": 32843,
              "nodeType": "Block",
              "src": "3975:1042:103",
              "statements": [
                {
                  "assignments": [
                    32728
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32728,
                      "mutability": "mutable",
                      "name": "events",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 32843,
                      "src": "3985:46:103",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                        "typeString": "bytes32[120]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 32726,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3985:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 32727,
                        "length": {
                          "argumentTypes": null,
                          "id": 32725,
                          "name": "MAX_EVENT_SCHEDULE_SIZE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22464,
                          "src": "3993:23:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "3985:32:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$120_storage_ptr",
                          "typeString": "bytes32[120]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 32729,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3985:46:103"
                },
                {
                  "assignments": [
                    32731
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32731,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 32843,
                      "src": "4041:12:103",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 32730,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "4041:6:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 32732,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4041:12:103"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 32743,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 32736,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 32733,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32712,
                          "src": "4096:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                            "typeString": "struct PAMTerms calldata"
                          }
                        },
                        "id": 32734,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "purchaseDate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22951,
                        "src": "4096:18:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 32735,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4118:1:103",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "4096:23:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 32738,
                            "name": "terms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32712,
                            "src": "4135:5:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                              "typeString": "struct PAMTerms calldata"
                            }
                          },
                          "id": 32739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "initialExchangeDate",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22947,
                          "src": "4135:25:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 32740,
                          "name": "segmentStart",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32714,
                          "src": "4162:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 32741,
                          "name": "segmentEnd",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32716,
                          "src": "4176:10:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 32737,
                        "name": "isInSegment",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24667,
                        "src": "4123:11:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                        }
                      },
                      "id": 32742,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4123:64:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4096:91:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 32759,
                  "nodeType": "IfStatement",
                  "src": "4092:212:103",
                  "trueBody": {
                    "id": 32758,
                    "nodeType": "Block",
                    "src": "4189:115:103",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 32744,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32728,
                              "src": "4203:6:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 32746,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 32745,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32731,
                              "src": "4210:5:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4203:13:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32748,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "4231:9:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 32749,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "IED",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4231:13:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32750,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32712,
                                  "src": "4246:5:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                    "typeString": "struct PAMTerms calldata"
                                  }
                                },
                                "id": 32751,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "initialExchangeDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22947,
                                "src": "4246:25:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 32747,
                              "name": "encodeEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24702,
                              "src": "4219:11:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                              }
                            },
                            "id": 32752,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4219:53:103",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4203:69:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 32754,
                        "nodeType": "ExpressionStatement",
                        "src": "4203:69:103"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "4286:7:103",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 32755,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32731,
                            "src": "4286:5:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 32757,
                        "nodeType": "ExpressionStatement",
                        "src": "4286:7:103"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 32763,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32760,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32712,
                        "src": "4338:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      "id": 32761,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "purchaseDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22951,
                      "src": "4338:18:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 32762,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4360:1:103",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4338:23:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 32787,
                  "nodeType": "IfStatement",
                  "src": "4334:236:103",
                  "trueBody": {
                    "id": 32786,
                    "nodeType": "Block",
                    "src": "4363:207:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32765,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32712,
                                "src": "4393:5:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                  "typeString": "struct PAMTerms calldata"
                                }
                              },
                              "id": 32766,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "purchaseDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22951,
                              "src": "4393:18:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 32767,
                              "name": "segmentStart",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32714,
                              "src": "4413:12:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 32768,
                              "name": "segmentEnd",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32716,
                              "src": "4427:10:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 32764,
                            "name": "isInSegment",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24667,
                            "src": "4381:11:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                            }
                          },
                          "id": 32769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4381:57:103",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 32785,
                        "nodeType": "IfStatement",
                        "src": "4377:183:103",
                        "trueBody": {
                          "id": 32784,
                          "nodeType": "Block",
                          "src": "4440:120:103",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 32770,
                                    "name": "events",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32728,
                                    "src": "4458:6:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                      "typeString": "bytes32[120] memory"
                                    }
                                  },
                                  "id": 32772,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 32771,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32731,
                                    "src": "4465:5:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4458:13:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 32774,
                                        "name": "EventType",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22610,
                                        "src": "4486:9:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                          "typeString": "type(enum EventType)"
                                        }
                                      },
                                      "id": 32775,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "PRD",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "4486:13:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 32776,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32712,
                                        "src": "4501:5:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                          "typeString": "struct PAMTerms calldata"
                                        }
                                      },
                                      "id": 32777,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "purchaseDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22951,
                                      "src": "4501:18:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 32773,
                                    "name": "encodeEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24702,
                                    "src": "4474:11:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 32778,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4474:46:103",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "4458:62:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 32780,
                              "nodeType": "ExpressionStatement",
                              "src": "4458:62:103"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32782,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "4538:7:103",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 32781,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32731,
                                  "src": "4538:5:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 32783,
                              "nodeType": "ExpressionStatement",
                              "src": "4538:7:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 32789,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32712,
                          "src": "4628:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                            "typeString": "struct PAMTerms calldata"
                          }
                        },
                        "id": 32790,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "maturityDate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22949,
                        "src": "4628:18:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 32791,
                        "name": "segmentStart",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32714,
                        "src": "4648:12:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 32792,
                        "name": "segmentEnd",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32716,
                        "src": "4662:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 32788,
                      "name": "isInSegment",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24667,
                      "src": "4616:11:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                      }
                    },
                    "id": 32793,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4616:57:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 32809,
                  "nodeType": "IfStatement",
                  "src": "4612:170:103",
                  "trueBody": {
                    "id": 32808,
                    "nodeType": "Block",
                    "src": "4675:107:103",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 32794,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32728,
                              "src": "4689:6:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 32796,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 32795,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32731,
                              "src": "4696:5:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4689:13:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32798,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "4717:9:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 32799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "MD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4717:12:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32800,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32712,
                                  "src": "4731:5:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                    "typeString": "struct PAMTerms calldata"
                                  }
                                },
                                "id": 32801,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maturityDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22949,
                                "src": "4731:18:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 32797,
                              "name": "encodeEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24702,
                              "src": "4705:11:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                              }
                            },
                            "id": 32802,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4705:45:103",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4689:61:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 32804,
                        "nodeType": "ExpressionStatement",
                        "src": "4689:61:103"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32806,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "4764:7:103",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 32805,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32731,
                            "src": "4764:5:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 32807,
                        "nodeType": "ExpressionStatement",
                        "src": "4764:7:103"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    32814
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32814,
                      "mutability": "mutable",
                      "name": "schedule",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 32843,
                      "src": "4843:25:103",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 32812,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4843:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 32813,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4843:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 32820,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 32818,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32731,
                        "src": "4885:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 32817,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "4871:13:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 32815,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4875:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 32816,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4875:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 32819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4871:20:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4843:48:103"
                },
                {
                  "body": {
                    "id": 32839,
                    "nodeType": "Block",
                    "src": "4937:48:103",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 32831,
                              "name": "schedule",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32814,
                              "src": "4951:8:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 32833,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 32832,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32822,
                              "src": "4960:1:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4951:11:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 32834,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32728,
                              "src": "4965:6:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 32836,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 32835,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32822,
                              "src": "4972:1:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4965:9:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4951:23:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 32838,
                        "nodeType": "ExpressionStatement",
                        "src": "4951:23:103"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 32827,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 32825,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32822,
                      "src": "4921:1:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 32826,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32731,
                      "src": "4925:5:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "4921:9:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 32840,
                  "initializationExpression": {
                    "assignments": [
                      32822
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 32822,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 32840,
                        "src": "4906:9:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32821,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4906:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 32824,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 32823,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4918:1:103",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4906:13:103"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 32829,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4932:3:103",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 32828,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32822,
                        "src": "4932:1:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 32830,
                    "nodeType": "ExpressionStatement",
                    "src": "4932:3:103"
                  },
                  "nodeType": "ForStatement",
                  "src": "4901:84:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32841,
                    "name": "schedule",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 32814,
                    "src": "5002:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 32722,
                  "id": 32842,
                  "nodeType": "Return",
                  "src": "4995:15:103"
                }
              ]
            },
            "documentation": {
              "id": 32710,
              "nodeType": "StructuredDocumentation",
              "src": "3392:354:103",
              "text": " @notice Computes a schedule segment of non-cyclic contract events based on the contract terms\n and the specified timestamps.\n @param terms terms of the contract\n @param segmentStart start timestamp of the segment\n @param segmentEnd end timestamp of the segement\n @return segment of the non-cyclic schedule"
            },
            "functionSelector": "e8d0c672",
            "id": 32844,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeNonCyclicScheduleSegment",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 32718,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3927:8:103"
            },
            "parameters": {
              "id": 32717,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32712,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32844,
                  "src": "3801:23:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32711,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "3801:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32714,
                  "mutability": "mutable",
                  "name": "segmentStart",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32844,
                  "src": "3834:20:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 32713,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3834:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32716,
                  "mutability": "mutable",
                  "name": "segmentEnd",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32844,
                  "src": "3864:18:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 32715,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3864:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3791:97:103"
            },
            "returnParameters": {
              "id": 32722,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32721,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32844,
                  "src": "3953:16:103",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 32719,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "3953:7:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 32720,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3953:9:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3952:18:103"
            },
            "scope": 33930,
            "src": "3751:1266:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32516
            ],
            "body": {
              "id": 33319,
              "nodeType": "Block",
              "src": "5672:5273:103",
              "statements": [
                {
                  "assignments": [
                    32865
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32865,
                      "mutability": "mutable",
                      "name": "events",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 33319,
                      "src": "5682:46:103",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                        "typeString": "bytes32[120]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 32863,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5682:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 32864,
                        "length": {
                          "argumentTypes": null,
                          "id": 32862,
                          "name": "MAX_EVENT_SCHEDULE_SIZE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22464,
                          "src": "5690:23:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "5682:32:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$120_storage_ptr",
                          "typeString": "bytes32[120]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 32866,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5682:46:103"
                },
                {
                  "assignments": [
                    32868
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32868,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 33319,
                      "src": "5738:13:103",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 32867,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5738:7:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 32869,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5738:13:103"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 32873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 32870,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32853,
                      "src": "5881:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32871,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "5894:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 32872,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5894:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "5881:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 32954,
                  "nodeType": "IfStatement",
                  "src": "5877:996:103",
                  "trueBody": {
                    "id": 32953,
                    "nodeType": "Block",
                    "src": "5908:965:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 32877,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 32874,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32847,
                              "src": "5926:5:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                "typeString": "struct PAMTerms calldata"
                              }
                            },
                            "id": 32875,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfInterestPayment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22955,
                            "src": "5926:38:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 32876,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5968:1:103",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5926:43:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 32952,
                        "nodeType": "IfStatement",
                        "src": "5922:941:103",
                        "trueBody": {
                          "id": 32951,
                          "nodeType": "Block",
                          "src": "5971:892:103",
                          "statements": [
                            {
                              "assignments": [
                                32883
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 32883,
                                  "mutability": "mutable",
                                  "name": "interestPaymentSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 32951,
                                  "src": "5989:54:103",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 32881,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5989:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32882,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 32880,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "5997:14:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "5989:23:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 32897,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32885,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "6096:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 32886,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22955,
                                    "src": "6096:38:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32887,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "6156:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 32888,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maturityDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22949,
                                    "src": "6156:18:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32889,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "6196:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 32890,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22999,
                                    "src": "6196:28:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32891,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "6246:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 32892,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "6246:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 32893,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6294:4:103",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 32894,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32849,
                                    "src": "6320:12:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 32895,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32851,
                                    "src": "6354:10:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 32884,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "6046:28:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 32896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6046:336:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5989:393:103"
                            },
                            {
                              "body": {
                                "id": 32949,
                                "nodeType": "Block",
                                "src": "6443:406:103",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 32912,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 32908,
                                          "name": "interestPaymentSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32883,
                                          "src": "6469:23:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 32910,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 32909,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32899,
                                          "src": "6493:1:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6469:26:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 32911,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6499:1:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "6469:31:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 32914,
                                    "nodeType": "IfStatement",
                                    "src": "6465:42:103",
                                    "trueBody": {
                                      "id": 32913,
                                      "nodeType": "Break",
                                      "src": "6502:5:103"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 32920,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 32915,
                                          "name": "interestPaymentSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32883,
                                          "src": "6533:23:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 32917,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 32916,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32899,
                                          "src": "6557:1:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6533:26:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 32918,
                                          "name": "terms",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32847,
                                          "src": "6563:5:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                            "typeString": "struct PAMTerms calldata"
                                          }
                                        },
                                        "id": 32919,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "capitalizationEndDate",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22953,
                                        "src": "6563:27:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6533:57:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 32922,
                                    "nodeType": "IfStatement",
                                    "src": "6529:71:103",
                                    "trueBody": {
                                      "id": 32921,
                                      "nodeType": "Continue",
                                      "src": "6592:8:103"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 32931,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 32924,
                                              "name": "interestPaymentSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 32883,
                                              "src": "6638:23:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 32926,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 32925,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 32899,
                                              "src": "6662:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "6638:26:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 32927,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32849,
                                            "src": "6666:12:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 32928,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32851,
                                            "src": "6680:10:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 32923,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "6626:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 32929,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6626:65:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 32930,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6695:5:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "6626:74:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 32933,
                                    "nodeType": "IfStatement",
                                    "src": "6622:88:103",
                                    "trueBody": {
                                      "id": 32932,
                                      "nodeType": "Continue",
                                      "src": "6702:8:103"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32944,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 32934,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32865,
                                          "src": "6732:6:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 32936,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 32935,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32868,
                                          "src": "6739:5:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "6732:13:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 32938,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "6760:9:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 32939,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "IP",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "6760:12:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 32940,
                                              "name": "interestPaymentSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 32883,
                                              "src": "6774:23:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 32942,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 32941,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 32899,
                                              "src": "6798:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "6774:26:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 32937,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "6748:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 32943,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6748:53:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "6732:69:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 32945,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6732:69:103"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32947,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "6823:7:103",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 32946,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32868,
                                        "src": "6823:5:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32948,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6823:7:103"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 32904,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 32902,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32899,
                                  "src": "6418:1:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 32903,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "6422:14:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6418:18:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 32950,
                              "initializationExpression": {
                                "assignments": [
                                  32899
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 32899,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 32950,
                                    "src": "6405:7:103",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 32898,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6405:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 32901,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 32900,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6415:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "6405:11:103"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32906,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "6438:3:103",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 32905,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32899,
                                    "src": "6438:1:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 32907,
                                "nodeType": "ExpressionStatement",
                                "src": "6438:3:103"
                              },
                              "nodeType": "ForStatement",
                              "src": "6400:449:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 32958,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 32955,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32853,
                      "src": "6903:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32956,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "6916:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 32957,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IPCI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6916:14:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "6903:27:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33047,
                  "nodeType": "IfStatement",
                  "src": "6899:1101:103",
                  "trueBody": {
                    "id": 33046,
                    "nodeType": "Block",
                    "src": "6932:1068:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 32967,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 32962,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32959,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32847,
                                "src": "6950:5:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                  "typeString": "struct PAMTerms calldata"
                                }
                              },
                              "id": 32960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cycleAnchorDateOfInterestPayment",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22955,
                              "src": "6950:38:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 32961,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6992:1:103",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6950:43:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 32966,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32963,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32847,
                                "src": "6997:5:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                  "typeString": "struct PAMTerms calldata"
                                }
                              },
                              "id": 32964,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "capitalizationEndDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22953,
                              "src": "6997:27:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 32965,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7028:1:103",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6997:32:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6950:79:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33045,
                        "nodeType": "IfStatement",
                        "src": "6946:1044:103",
                        "trueBody": {
                          "id": 33044,
                          "nodeType": "Block",
                          "src": "7031:959:103",
                          "statements": [
                            {
                              "assignments": [
                                32969
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 32969,
                                  "mutability": "mutable",
                                  "name": "cycleOfInterestCapitalization",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33044,
                                  "src": "7049:40:103",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                    "typeString": "struct IPS"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 32968,
                                    "name": "IPS",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 22486,
                                    "src": "7049:3:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_storage_ptr",
                                      "typeString": "struct IPS"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 32972,
                              "initialValue": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32970,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32847,
                                  "src": "7092:5:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                    "typeString": "struct PAMTerms calldata"
                                  }
                                },
                                "id": 32971,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "cycleOfInterestPayment",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22999,
                                "src": "7092:28:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                  "typeString": "struct IPS calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7049:71:103"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32978,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32973,
                                    "name": "cycleOfInterestCapitalization",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32969,
                                    "src": "7138:29:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    }
                                  },
                                  "id": 32975,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "s",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22483,
                                  "src": "7138:31:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_S_$22477",
                                    "typeString": "enum S"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32976,
                                    "name": "S",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22477,
                                    "src": "7172:1:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_S_$22477_$",
                                      "typeString": "type(enum S)"
                                    }
                                  },
                                  "id": 32977,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "SHORT",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7172:7:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_S_$22477",
                                    "typeString": "enum S"
                                  }
                                },
                                "src": "7138:41:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_S_$22477",
                                  "typeString": "enum S"
                                }
                              },
                              "id": 32979,
                              "nodeType": "ExpressionStatement",
                              "src": "7138:41:103"
                            },
                            {
                              "assignments": [
                                32985
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 32985,
                                  "mutability": "mutable",
                                  "name": "interestPaymentSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33044,
                                  "src": "7197:54:103",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 32983,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7197:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32984,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 32982,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "7205:14:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "7197:23:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 32998,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32987,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "7304:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 32988,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22955,
                                    "src": "7304:38:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32989,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "7364:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 32990,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "capitalizationEndDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22953,
                                    "src": "7364:27:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 32991,
                                    "name": "cycleOfInterestCapitalization",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32969,
                                    "src": "7413:29:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32992,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "7464:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 32993,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "7464:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 32994,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7512:4:103",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 32995,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32849,
                                    "src": "7538:12:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 32996,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32851,
                                    "src": "7572:10:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 32986,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "7254:28:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 32997,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7254:346:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7197:403:103"
                            },
                            {
                              "body": {
                                "id": 33042,
                                "nodeType": "Block",
                                "src": "7661:315:103",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 33013,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 33009,
                                          "name": "interestPaymentSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32985,
                                          "src": "7687:23:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 33011,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 33010,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33000,
                                          "src": "7711:1:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "7687:26:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 33012,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7717:1:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "7687:31:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 33015,
                                    "nodeType": "IfStatement",
                                    "src": "7683:42:103",
                                    "trueBody": {
                                      "id": 33014,
                                      "nodeType": "Break",
                                      "src": "7720:5:103"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 33024,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 33017,
                                              "name": "interestPaymentSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 32985,
                                              "src": "7763:23:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 33019,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 33018,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33000,
                                              "src": "7787:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "7763:26:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 33020,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32849,
                                            "src": "7791:12:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 33021,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32851,
                                            "src": "7805:10:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 33016,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "7751:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 33022,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7751:65:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 33023,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7820:5:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "7751:74:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 33026,
                                    "nodeType": "IfStatement",
                                    "src": "7747:88:103",
                                    "trueBody": {
                                      "id": 33025,
                                      "nodeType": "Continue",
                                      "src": "7827:8:103"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33037,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 33027,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32865,
                                          "src": "7857:6:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 33029,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 33028,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32868,
                                          "src": "7864:5:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "7857:13:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 33031,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "7885:9:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 33032,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "IPCI",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "7885:14:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 33033,
                                              "name": "interestPaymentSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 32985,
                                              "src": "7901:23:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 33035,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 33034,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33000,
                                              "src": "7925:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "7901:26:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 33030,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "7873:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 33036,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7873:55:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "7857:71:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 33038,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7857:71:103"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33040,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "7950:7:103",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 33039,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32868,
                                        "src": "7950:5:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33041,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7950:7:103"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33005,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33003,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33000,
                                  "src": "7636:1:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 33004,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "7640:14:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7636:18:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 33043,
                              "initializationExpression": {
                                "assignments": [
                                  33000
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 33000,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 33043,
                                    "src": "7623:7:103",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 32999,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7623:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 33002,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33001,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7633:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "7623:11:103"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33007,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "7656:3:103",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 33006,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33000,
                                    "src": "7656:1:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 33008,
                                "nodeType": "ExpressionStatement",
                                "src": "7656:3:103"
                              },
                              "nodeType": "ForStatement",
                              "src": "7618:358:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33051,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33048,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32853,
                      "src": "8036:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33049,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "8049:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33050,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8049:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "8036:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33124,
                  "nodeType": "IfStatement",
                  "src": "8032:895:103",
                  "trueBody": {
                    "id": 33123,
                    "nodeType": "Block",
                    "src": "8063:864:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33052,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32847,
                              "src": "8081:5:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                "typeString": "struct PAMTerms calldata"
                              }
                            },
                            "id": 33053,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfRateReset",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22957,
                            "src": "8081:32:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 33054,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8117:1:103",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8081:37:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33122,
                        "nodeType": "IfStatement",
                        "src": "8077:807:103",
                        "trueBody": {
                          "id": 33121,
                          "nodeType": "Block",
                          "src": "8120:764:103",
                          "statements": [
                            {
                              "assignments": [
                                33061
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33061,
                                  "mutability": "mutable",
                                  "name": "rateResetSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33121,
                                  "src": "8138:48:103",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 33059,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8138:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33060,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 33058,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "8146:14:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "8138:23:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33075,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33063,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "8239:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33064,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfRateReset",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22957,
                                    "src": "8239:32:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33065,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "8293:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33066,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maturityDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22949,
                                    "src": "8293:18:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33067,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "8333:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33068,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfRateReset",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 23001,
                                    "src": "8333:22:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33069,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "8377:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33070,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "8377:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "66616c7365",
                                    "id": 33071,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8425:5:103",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33072,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32849,
                                    "src": "8452:12:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33073,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32851,
                                    "src": "8486:10:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33062,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "8189:28:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 33074,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8189:325:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8138:376:103"
                            },
                            {
                              "body": {
                                "id": 33119,
                                "nodeType": "Block",
                                "src": "8575:295:103",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 33090,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 33086,
                                          "name": "rateResetSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33061,
                                          "src": "8601:17:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 33088,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 33087,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33077,
                                          "src": "8619:1:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "8601:20:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 33089,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8625:1:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "8601:25:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 33092,
                                    "nodeType": "IfStatement",
                                    "src": "8597:36:103",
                                    "trueBody": {
                                      "id": 33091,
                                      "nodeType": "Break",
                                      "src": "8628:5:103"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 33101,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 33094,
                                              "name": "rateResetSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33061,
                                              "src": "8671:17:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 33096,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 33095,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33077,
                                              "src": "8689:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8671:20:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 33097,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32849,
                                            "src": "8693:12:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 33098,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32851,
                                            "src": "8707:10:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 33093,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "8659:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 33099,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8659:59:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 33100,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8722:5:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "8659:68:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 33103,
                                    "nodeType": "IfStatement",
                                    "src": "8655:82:103",
                                    "trueBody": {
                                      "id": 33102,
                                      "nodeType": "Continue",
                                      "src": "8729:8:103"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33114,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 33104,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32865,
                                          "src": "8759:6:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 33106,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 33105,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32868,
                                          "src": "8766:5:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "8759:13:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 33108,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "8787:9:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 33109,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "RR",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "8787:12:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 33110,
                                              "name": "rateResetSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33061,
                                              "src": "8801:17:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 33112,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 33111,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33077,
                                              "src": "8819:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8801:20:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 33107,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "8775:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 33113,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8775:47:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "8759:63:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 33115,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8759:63:103"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33117,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "8844:7:103",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 33116,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32868,
                                        "src": "8844:5:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33118,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8844:7:103"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33082,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33080,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33077,
                                  "src": "8550:1:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 33081,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "8554:14:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8550:18:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 33120,
                              "initializationExpression": {
                                "assignments": [
                                  33077
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 33077,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 33120,
                                    "src": "8537:7:103",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 33076,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8537:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 33079,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33078,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8547:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "8537:11:103"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33084,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "8570:3:103",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 33083,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33077,
                                    "src": "8570:1:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 33085,
                                "nodeType": "ExpressionStatement",
                                "src": "8570:3:103"
                              },
                              "nodeType": "ForStatement",
                              "src": "8532:338:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33125,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32853,
                      "src": "8957:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33126,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "8970:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33127,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "FP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8970:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "8957:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33201,
                  "nodeType": "IfStatement",
                  "src": "8953:819:103",
                  "trueBody": {
                    "id": 33200,
                    "nodeType": "Block",
                    "src": "8984:788:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33129,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32847,
                              "src": "9002:5:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                "typeString": "struct PAMTerms calldata"
                              }
                            },
                            "id": 33130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfFee",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22961,
                            "src": "9002:26:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 33131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9032:1:103",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9002:31:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33199,
                        "nodeType": "IfStatement",
                        "src": "8998:764:103",
                        "trueBody": {
                          "id": 33198,
                          "nodeType": "Block",
                          "src": "9035:727:103",
                          "statements": [
                            {
                              "assignments": [
                                33138
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33138,
                                  "mutability": "mutable",
                                  "name": "feeSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33198,
                                  "src": "9053:42:103",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 33136,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9053:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33137,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 33135,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "9061:14:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "9053:23:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33152,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33140,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "9148:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33141,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22961,
                                    "src": "9148:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33142,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "9196:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33143,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maturityDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22949,
                                    "src": "9196:18:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33144,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "9236:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33145,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 23005,
                                    "src": "9236:16:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33146,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "9274:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33147,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "9274:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 33148,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9322:4:103",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33149,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32849,
                                    "src": "9348:12:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33150,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32851,
                                    "src": "9382:10:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33139,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "9098:28:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 33151,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9098:312:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9053:357:103"
                            },
                            {
                              "body": {
                                "id": 33196,
                                "nodeType": "Block",
                                "src": "9471:277:103",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 33167,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 33163,
                                          "name": "feeSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33138,
                                          "src": "9497:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 33165,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 33164,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33154,
                                          "src": "9509:1:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "9497:14:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 33166,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9515:1:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "9497:19:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 33169,
                                    "nodeType": "IfStatement",
                                    "src": "9493:30:103",
                                    "trueBody": {
                                      "id": 33168,
                                      "nodeType": "Break",
                                      "src": "9518:5:103"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 33178,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 33171,
                                              "name": "feeSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33138,
                                              "src": "9561:11:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 33173,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 33172,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33154,
                                              "src": "9573:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "9561:14:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 33174,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32849,
                                            "src": "9577:12:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 33175,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32851,
                                            "src": "9591:10:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 33170,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "9549:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 33176,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9549:53:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 33177,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9606:5:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "9549:62:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 33180,
                                    "nodeType": "IfStatement",
                                    "src": "9545:76:103",
                                    "trueBody": {
                                      "id": 33179,
                                      "nodeType": "Continue",
                                      "src": "9613:8:103"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33191,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 33181,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32865,
                                          "src": "9643:6:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 33183,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 33182,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32868,
                                          "src": "9650:5:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "9643:13:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 33185,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "9671:9:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 33186,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "FP",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "9671:12:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 33187,
                                              "name": "feeSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33138,
                                              "src": "9685:11:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 33189,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 33188,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33154,
                                              "src": "9697:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "9685:14:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 33184,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "9659:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 33190,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9659:41:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "9643:57:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 33192,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9643:57:103"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33194,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "9722:7:103",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 33193,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32868,
                                        "src": "9722:5:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33195,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9722:7:103"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33159,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33157,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33154,
                                  "src": "9446:1:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 33158,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "9450:14:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9446:18:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 33197,
                              "initializationExpression": {
                                "assignments": [
                                  33154
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 33154,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 33197,
                                    "src": "9433:7:103",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 33153,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9433:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 33156,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33155,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9443:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "9433:11:103"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33161,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "9466:3:103",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 33160,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33154,
                                    "src": "9466:1:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 33162,
                                "nodeType": "ExpressionStatement",
                                "src": "9466:3:103"
                              },
                              "nodeType": "ForStatement",
                              "src": "9428:320:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33205,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33202,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32853,
                      "src": "9805:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33203,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "9818:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33204,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "SC",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9818:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "9805:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33285,
                  "nodeType": "IfStatement",
                  "src": "9801:909:103",
                  "trueBody": {
                    "id": 33284,
                    "nodeType": "Block",
                    "src": "9832:878:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 33216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                                  "typeString": "enum ScalingEffect"
                                },
                                "id": 33210,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33206,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32847,
                                    "src": "9851:5:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                      "typeString": "struct PAMTerms calldata"
                                    }
                                  },
                                  "id": 33207,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "scalingEffect",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22931,
                                  "src": "9851:19:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                                    "typeString": "enum ScalingEffect"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33208,
                                    "name": "ScalingEffect",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22623,
                                    "src": "9874:13:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ScalingEffect_$22623_$",
                                      "typeString": "type(enum ScalingEffect)"
                                    }
                                  },
                                  "id": 33209,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "_000",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9874:18:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                                    "typeString": "enum ScalingEffect"
                                  }
                                },
                                "src": "9851:41:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 33211,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "9850:43:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 33215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33212,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32847,
                                "src": "9897:5:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                  "typeString": "struct PAMTerms calldata"
                                }
                              },
                              "id": 33213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cycleAnchorDateOfScalingIndex",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22959,
                              "src": "9897:35:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 33214,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9936:1:103",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "9897:40:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9850:87:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33283,
                        "nodeType": "IfStatement",
                        "src": "9846:854:103",
                        "trueBody": {
                          "id": 33282,
                          "nodeType": "Block",
                          "src": "9939:761:103",
                          "statements": [
                            {
                              "assignments": [
                                33222
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33222,
                                  "mutability": "mutable",
                                  "name": "scalingSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33282,
                                  "src": "9957:46:103",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 33220,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9957:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33221,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 33219,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "9965:14:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "9957:23:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33236,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33224,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "10056:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33225,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfScalingIndex",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22959,
                                    "src": "10056:35:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33226,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "10113:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33227,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maturityDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22949,
                                    "src": "10113:18:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33228,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "10153:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33229,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfScalingIndex",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 23003,
                                    "src": "10153:25:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33230,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "10200:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33231,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "10200:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 33232,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10248:4:103",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33233,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32849,
                                    "src": "10274:12:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33234,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32851,
                                    "src": "10308:10:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33223,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "10006:28:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 33235,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10006:330:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9957:379:103"
                            },
                            {
                              "body": {
                                "id": 33280,
                                "nodeType": "Block",
                                "src": "10397:289:103",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 33251,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 33247,
                                          "name": "scalingSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33222,
                                          "src": "10423:15:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 33249,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 33248,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33238,
                                          "src": "10439:1:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "10423:18:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 33250,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10445:1:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "10423:23:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 33253,
                                    "nodeType": "IfStatement",
                                    "src": "10419:34:103",
                                    "trueBody": {
                                      "id": 33252,
                                      "nodeType": "Break",
                                      "src": "10448:5:103"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 33262,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 33255,
                                              "name": "scalingSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33222,
                                              "src": "10491:15:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 33257,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 33256,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33238,
                                              "src": "10507:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "10491:18:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 33258,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32849,
                                            "src": "10511:12:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 33259,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32851,
                                            "src": "10525:10:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 33254,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "10479:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 33260,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10479:57:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 33261,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10540:5:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "10479:66:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 33264,
                                    "nodeType": "IfStatement",
                                    "src": "10475:80:103",
                                    "trueBody": {
                                      "id": 33263,
                                      "nodeType": "Continue",
                                      "src": "10547:8:103"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33275,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 33265,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32865,
                                          "src": "10577:6:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 33267,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 33266,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32868,
                                          "src": "10584:5:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "10577:13:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 33269,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "10605:9:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 33270,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "SC",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "10605:12:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 33271,
                                              "name": "scalingSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33222,
                                              "src": "10619:15:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 33273,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 33272,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33238,
                                              "src": "10635:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "10619:18:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 33268,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "10593:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 33274,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10593:45:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "10577:61:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 33276,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10577:61:103"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33278,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "10660:7:103",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 33277,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32868,
                                        "src": "10660:5:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33279,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10660:7:103"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33241,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33238,
                                  "src": "10372:1:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 33242,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "10376:14:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10372:18:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 33281,
                              "initializationExpression": {
                                "assignments": [
                                  33238
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 33238,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 33281,
                                    "src": "10359:7:103",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 33237,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10359:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 33240,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33239,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10369:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "10359:11:103"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33245,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "10392:3:103",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 33244,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33238,
                                    "src": "10392:1:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 33246,
                                "nodeType": "ExpressionStatement",
                                "src": "10392:3:103"
                              },
                              "nodeType": "ForStatement",
                              "src": "10354:332:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    33290
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33290,
                      "mutability": "mutable",
                      "name": "schedule",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 33319,
                      "src": "10771:25:103",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 33288,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10771:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 33289,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "10771:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 33296,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 33294,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32868,
                        "src": "10813:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 33293,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "10799:13:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 33291,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10803:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 33292,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "10803:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 33295,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10799:20:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10771:48:103"
                },
                {
                  "body": {
                    "id": 33315,
                    "nodeType": "Block",
                    "src": "10865:48:103",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 33313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 33307,
                              "name": "schedule",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33290,
                              "src": "10879:8:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 33309,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 33308,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33298,
                              "src": "10888:1:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10879:11:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 33310,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32865,
                              "src": "10893:6:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 33312,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 33311,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33298,
                              "src": "10900:1:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10893:9:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "10879:23:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 33314,
                        "nodeType": "ExpressionStatement",
                        "src": "10879:23:103"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33301,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33298,
                      "src": "10849:1:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 33302,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32868,
                      "src": "10853:5:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10849:9:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33316,
                  "initializationExpression": {
                    "assignments": [
                      33298
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 33298,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 33316,
                        "src": "10834:9:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33297,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10834:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 33300,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 33299,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10846:1:103",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "10834:13:103"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 33305,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "10860:3:103",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 33304,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33298,
                        "src": "10860:1:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 33306,
                    "nodeType": "ExpressionStatement",
                    "src": "10860:3:103"
                  },
                  "nodeType": "ForStatement",
                  "src": "10829:84:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 33317,
                    "name": "schedule",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33290,
                    "src": "10930:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 32859,
                  "id": 33318,
                  "nodeType": "Return",
                  "src": "10923:15:103"
                }
              ]
            },
            "documentation": {
              "id": 32845,
              "nodeType": "StructuredDocumentation",
              "src": "5023:395:103",
              "text": " @notice Computes a schedule segment of cyclic contract events based on the contract terms\n and the specified timestamps.\n @param terms terms of the contract\n @param segmentStart start timestamp of the segment\n @param segmentEnd end timestamp of the segement\n @param eventType eventType of the cyclic schedule\n @return event schedule segment"
            },
            "functionSelector": "931172d1",
            "id": 33320,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeCyclicScheduleSegment",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 32855,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5625:8:103"
            },
            "parameters": {
              "id": 32854,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32847,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33320,
                  "src": "5470:23:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32846,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "5470:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32849,
                  "mutability": "mutable",
                  "name": "segmentStart",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33320,
                  "src": "5503:20:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 32848,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5503:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32851,
                  "mutability": "mutable",
                  "name": "segmentEnd",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33320,
                  "src": "5533:18:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 32850,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5533:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32853,
                  "mutability": "mutable",
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33320,
                  "src": "5561:19:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_EventType_$22610",
                    "typeString": "enum EventType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32852,
                    "name": "EventType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22610,
                    "src": "5561:9:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5460:126:103"
            },
            "returnParameters": {
              "id": 32859,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32858,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33320,
                  "src": "5650:16:103",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 32856,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "5650:7:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 32857,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5650:9:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5649:18:103"
            },
            "scope": 33930,
            "src": "5423:5522:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32501
            ],
            "body": {
              "id": 33572,
              "nodeType": "Block",
              "src": "11511:3392:103",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33336,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33333,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33327,
                      "src": "11640:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33334,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "11653:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33335,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11653:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "11640:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33387,
                  "nodeType": "IfStatement",
                  "src": "11636:707:103",
                  "trueBody": {
                    "id": 33386,
                    "nodeType": "Block",
                    "src": "11667:676:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 33346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 33341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33337,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33323,
                                  "src": "11685:5:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                    "typeString": "struct PAMTerms calldata"
                                  }
                                },
                                "id": 33338,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "cycleOfInterestPayment",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22999,
                                "src": "11685:28:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                  "typeString": "struct IPS calldata"
                                }
                              },
                              "id": 33339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isSet",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22485,
                              "src": "11685:34:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 33340,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11723:4:103",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            "src": "11685:42:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 33345,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33342,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33323,
                                "src": "11731:5:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                  "typeString": "struct PAMTerms calldata"
                                }
                              },
                              "id": 33343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cycleAnchorDateOfInterestPayment",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22955,
                              "src": "11731:38:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 33344,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11773:1:103",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "11731:43:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "11685:89:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33385,
                        "nodeType": "IfStatement",
                        "src": "11681:652:103",
                        "trueBody": {
                          "id": 33384,
                          "nodeType": "Block",
                          "src": "11776:557:103",
                          "statements": [
                            {
                              "assignments": [
                                33348
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33348,
                                  "mutability": "mutable",
                                  "name": "nextInterestPaymentDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33384,
                                  "src": "11794:31:103",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 33347,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11794:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33358,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33350,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "11887:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33351,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22999,
                                    "src": "11887:28:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33352,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "11937:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33353,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "11937:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33354,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "11985:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33355,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22955,
                                    "src": "11985:38:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33356,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33325,
                                    "src": "12045:16:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33349,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "11828:37:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 33357,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11828:251:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11794:285:103"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33361,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33359,
                                  "name": "nextInterestPaymentDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33348,
                                  "src": "12101:23:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33360,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12128:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "12101:28:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 33367,
                              "nodeType": "IfStatement",
                              "src": "12097:51:103",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 33364,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12146:1:103",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 33363,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12138:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 33362,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12138:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 33365,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12138:10:103",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 33332,
                                "id": 33366,
                                "nodeType": "Return",
                                "src": "12131:17:103"
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33371,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33368,
                                  "name": "nextInterestPaymentDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33348,
                                  "src": "12170:23:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33369,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33323,
                                    "src": "12197:5:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                      "typeString": "struct PAMTerms calldata"
                                    }
                                  },
                                  "id": 33370,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "capitalizationEndDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22953,
                                  "src": "12197:27:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12170:54:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 33377,
                              "nodeType": "IfStatement",
                              "src": "12166:77:103",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 33374,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12241:1:103",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 33373,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12233:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 33372,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12233:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 33375,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12233:10:103",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 33332,
                                "id": 33376,
                                "nodeType": "Return",
                                "src": "12226:17:103"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33379,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "12280:9:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 33380,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "IP",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12280:12:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33381,
                                    "name": "nextInterestPaymentDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33348,
                                    "src": "12294:23:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33378,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "12268:11:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 33382,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12268:50:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 33332,
                              "id": 33383,
                              "nodeType": "Return",
                              "src": "12261:57:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33388,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33327,
                      "src": "12373:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33389,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "12386:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33390,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IPCI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "12386:14:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "12373:27:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33442,
                  "nodeType": "IfStatement",
                  "src": "12369:776:103",
                  "trueBody": {
                    "id": 33441,
                    "nodeType": "Block",
                    "src": "12402:743:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 33400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 33395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33392,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33323,
                                "src": "12420:5:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                  "typeString": "struct PAMTerms calldata"
                                }
                              },
                              "id": 33393,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cycleAnchorDateOfInterestPayment",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22955,
                              "src": "12420:38:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 33394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12462:1:103",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "12420:43:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 33399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33396,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33323,
                                "src": "12467:5:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                  "typeString": "struct PAMTerms calldata"
                                }
                              },
                              "id": 33397,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "capitalizationEndDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22953,
                              "src": "12467:27:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 33398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12498:1:103",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "12467:32:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "12420:79:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33440,
                        "nodeType": "IfStatement",
                        "src": "12416:719:103",
                        "trueBody": {
                          "id": 33439,
                          "nodeType": "Block",
                          "src": "12501:634:103",
                          "statements": [
                            {
                              "assignments": [
                                33402
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33402,
                                  "mutability": "mutable",
                                  "name": "cycleOfInterestCapitalization",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33439,
                                  "src": "12519:40:103",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                    "typeString": "struct IPS"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 33401,
                                    "name": "IPS",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 22486,
                                    "src": "12519:3:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_storage_ptr",
                                      "typeString": "struct IPS"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33405,
                              "initialValue": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33403,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33323,
                                  "src": "12562:5:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                    "typeString": "struct PAMTerms calldata"
                                  }
                                },
                                "id": 33404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "cycleOfInterestPayment",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22999,
                                "src": "12562:28:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                  "typeString": "struct IPS calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12519:71:103"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33411,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33406,
                                    "name": "cycleOfInterestCapitalization",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33402,
                                    "src": "12608:29:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    }
                                  },
                                  "id": 33408,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "s",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22483,
                                  "src": "12608:31:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_S_$22477",
                                    "typeString": "enum S"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33409,
                                    "name": "S",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22477,
                                    "src": "12642:1:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_S_$22477_$",
                                      "typeString": "type(enum S)"
                                    }
                                  },
                                  "id": 33410,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "SHORT",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12642:7:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_S_$22477",
                                    "typeString": "enum S"
                                  }
                                },
                                "src": "12608:41:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_S_$22477",
                                  "typeString": "enum S"
                                }
                              },
                              "id": 33412,
                              "nodeType": "ExpressionStatement",
                              "src": "12608:41:103"
                            },
                            {
                              "assignments": [
                                33414
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33414,
                                  "mutability": "mutable",
                                  "name": "nextInterestCapitalizationDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33439,
                                  "src": "12667:38:103",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 33413,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12667:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33423,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 33416,
                                    "name": "cycleOfInterestCapitalization",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33402,
                                    "src": "12767:29:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33417,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "12818:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33418,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "12818:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33419,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "12866:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33420,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22955,
                                    "src": "12866:38:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33421,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33325,
                                    "src": "12926:16:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33415,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "12708:37:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 33422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12708:252:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12667:293:103"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33426,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33424,
                                  "name": "nextInterestCapitalizationDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33414,
                                  "src": "12982:30:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33425,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13016:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "12982:35:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 33432,
                              "nodeType": "IfStatement",
                              "src": "12978:58:103",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 33429,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13034:1:103",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 33428,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13026:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 33427,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13026:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 33430,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13026:10:103",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 33332,
                                "id": 33431,
                                "nodeType": "Return",
                                "src": "13019:17:103"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33434,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "13073:9:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 33435,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "IPCI",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13073:14:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33436,
                                    "name": "nextInterestCapitalizationDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33414,
                                    "src": "13089:30:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33433,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "13061:11:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 33437,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13061:59:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 33332,
                              "id": 33438,
                              "nodeType": "Return",
                              "src": "13054:66:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33446,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33443,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33327,
                      "src": "13181:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33444,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "13194:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33445,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13194:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "13181:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33481,
                  "nodeType": "IfStatement",
                  "src": "13177:563:103",
                  "trueBody": {
                    "id": 33480,
                    "nodeType": "Block",
                    "src": "13208:532:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33447,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33323,
                              "src": "13226:5:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                "typeString": "struct PAMTerms calldata"
                              }
                            },
                            "id": 33448,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfRateReset",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22957,
                            "src": "13226:32:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 33449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13262:1:103",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13226:37:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33479,
                        "nodeType": "IfStatement",
                        "src": "13222:475:103",
                        "trueBody": {
                          "id": 33478,
                          "nodeType": "Block",
                          "src": "13265:432:103",
                          "statements": [
                            {
                              "assignments": [
                                33452
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33452,
                                  "mutability": "mutable",
                                  "name": "nextRateResetDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33478,
                                  "src": "13283:25:103",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 33451,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13283:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33462,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33454,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "13370:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33455,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfRateReset",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 23001,
                                    "src": "13370:22:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33456,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "13414:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33457,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "13414:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33458,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "13462:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33459,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfRateReset",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22957,
                                    "src": "13462:32:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33460,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33325,
                                    "src": "13516:16:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33453,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "13311:37:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 33461,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13311:239:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13283:267:103"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33465,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33463,
                                  "name": "nextRateResetDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33452,
                                  "src": "13572:17:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33464,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13593:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13572:22:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 33471,
                              "nodeType": "IfStatement",
                              "src": "13568:45:103",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 33468,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13611:1:103",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 33467,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13603:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 33466,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13603:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 33469,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13603:10:103",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 33332,
                                "id": 33470,
                                "nodeType": "Return",
                                "src": "13596:17:103"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33473,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "13650:9:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 33474,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "RR",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13650:12:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33475,
                                    "name": "nextRateResetDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33452,
                                    "src": "13664:17:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33472,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "13638:11:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 33476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13638:44:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 33332,
                              "id": 33477,
                              "nodeType": "Return",
                              "src": "13631:51:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33485,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33482,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33327,
                      "src": "13770:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33483,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "13783:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33484,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "FP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13783:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "13770:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33520,
                  "nodeType": "IfStatement",
                  "src": "13766:494:103",
                  "trueBody": {
                    "id": 33519,
                    "nodeType": "Block",
                    "src": "13797:463:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33486,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33323,
                              "src": "13815:5:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                "typeString": "struct PAMTerms calldata"
                              }
                            },
                            "id": 33487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfFee",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22961,
                            "src": "13815:26:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 33488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13845:1:103",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13815:31:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33518,
                        "nodeType": "IfStatement",
                        "src": "13811:439:103",
                        "trueBody": {
                          "id": 33517,
                          "nodeType": "Block",
                          "src": "13848:402:103",
                          "statements": [
                            {
                              "assignments": [
                                33491
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33491,
                                  "mutability": "mutable",
                                  "name": "nextFeeDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33517,
                                  "src": "13866:19:103",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 33490,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13866:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33501,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33493,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "13947:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33494,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 23005,
                                    "src": "13947:16:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33495,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "13985:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33496,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "13985:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33497,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "14033:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33498,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22961,
                                    "src": "14033:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33499,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33325,
                                    "src": "14081:16:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33492,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "13888:37:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 33500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13888:227:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13866:249:103"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33504,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33502,
                                  "name": "nextFeeDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33491,
                                  "src": "14137:11:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33503,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14152:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "14137:16:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 33510,
                              "nodeType": "IfStatement",
                              "src": "14133:39:103",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 33507,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14170:1:103",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 33506,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14162:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 33505,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14162:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 33508,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14162:10:103",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 33332,
                                "id": 33509,
                                "nodeType": "Return",
                                "src": "14155:17:103"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33512,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "14209:9:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 33513,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "FP",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "14209:12:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33514,
                                    "name": "nextFeeDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33491,
                                    "src": "14223:11:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33511,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "14197:11:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 33515,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14197:38:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 33332,
                              "id": 33516,
                              "nodeType": "Return",
                              "src": "14190:45:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33521,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33327,
                      "src": "14293:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33522,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "14306:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33523,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "SC",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "14306:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "14293:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33566,
                  "nodeType": "IfStatement",
                  "src": "14289:580:103",
                  "trueBody": {
                    "id": 33565,
                    "nodeType": "Block",
                    "src": "14320:549:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 33535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                                  "typeString": "enum ScalingEffect"
                                },
                                "id": 33529,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33525,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33323,
                                    "src": "14339:5:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                      "typeString": "struct PAMTerms calldata"
                                    }
                                  },
                                  "id": 33526,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "scalingEffect",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22931,
                                  "src": "14339:19:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                                    "typeString": "enum ScalingEffect"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33527,
                                    "name": "ScalingEffect",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22623,
                                    "src": "14362:13:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ScalingEffect_$22623_$",
                                      "typeString": "type(enum ScalingEffect)"
                                    }
                                  },
                                  "id": 33528,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "_000",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "14362:18:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                                    "typeString": "enum ScalingEffect"
                                  }
                                },
                                "src": "14339:41:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 33530,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "14338:43:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 33534,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33531,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33323,
                                "src": "14385:5:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                  "typeString": "struct PAMTerms calldata"
                                }
                              },
                              "id": 33532,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cycleAnchorDateOfScalingIndex",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22959,
                              "src": "14385:35:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 33533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14424:1:103",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "14385:40:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "14338:87:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33564,
                        "nodeType": "IfStatement",
                        "src": "14334:525:103",
                        "trueBody": {
                          "id": 33563,
                          "nodeType": "Block",
                          "src": "14427:432:103",
                          "statements": [
                            {
                              "assignments": [
                                33537
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33537,
                                  "mutability": "mutable",
                                  "name": "nextScalingDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33563,
                                  "src": "14445:23:103",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 33536,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14445:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33547,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33539,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "14530:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33540,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfScalingIndex",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 23003,
                                    "src": "14530:25:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33541,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "14577:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33542,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "14577:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33543,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "14625:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33544,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfScalingIndex",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22959,
                                    "src": "14625:35:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33545,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33325,
                                    "src": "14682:16:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33538,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "14471:37:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 33546,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14471:245:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14445:271:103"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33550,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33548,
                                  "name": "nextScalingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33537,
                                  "src": "14738:15:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33549,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14757:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "14738:20:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 33556,
                              "nodeType": "IfStatement",
                              "src": "14734:43:103",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 33553,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14775:1:103",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 33552,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14767:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 33551,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14767:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 33554,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14767:10:103",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 33332,
                                "id": 33555,
                                "nodeType": "Return",
                                "src": "14760:17:103"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33558,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "14814:9:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 33559,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "SC",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "14814:12:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33560,
                                    "name": "nextScalingDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33537,
                                    "src": "14828:15:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33557,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "14802:11:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 33561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14802:42:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 33332,
                              "id": 33562,
                              "nodeType": "Return",
                              "src": "14795:49:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 33569,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14894:1:103",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 33568,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "14886:7:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": {
                        "id": 33567,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "14886:7:103",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 33570,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14886:10:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 33332,
                  "id": 33571,
                  "nodeType": "Return",
                  "src": "14879:17:103"
                }
              ]
            },
            "documentation": {
              "id": 33321,
              "nodeType": "StructuredDocumentation",
              "src": "10951:345:103",
              "text": " @notice Computes a schedule segment of cyclic contract events based on the contract terms\n and the specified timestamps.\n @param terms terms of the contract\n @param lastScheduleTime last occurrence of cyclic event\n @param eventType eventType of the cyclic schedule\n @return event schedule segment"
            },
            "functionSelector": "dd37acde",
            "id": 33573,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeNextCyclicEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 33329,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11473:8:103"
            },
            "parameters": {
              "id": 33328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33323,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33573,
                  "src": "11342:23:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33322,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "11342:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33325,
                  "mutability": "mutable",
                  "name": "lastScheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33573,
                  "src": "11375:24:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33324,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11375:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33327,
                  "mutability": "mutable",
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33573,
                  "src": "11409:19:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_EventType_$22610",
                    "typeString": "enum EventType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33326,
                    "name": "EventType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22610,
                    "src": "11409:9:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11332:102:103"
            },
            "returnParameters": {
              "id": 33332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33331,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33573,
                  "src": "11498:7:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 33330,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11498:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11497:9:103"
            },
            "scope": 33930,
            "src": "11301:3602:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32532
            ],
            "body": {
              "id": 33592,
              "nodeType": "Block",
              "src": "15791:28:103",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 33590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "15808:4:103",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 33589,
                  "id": 33591,
                  "nodeType": "Return",
                  "src": "15801:11:103"
                }
              ]
            },
            "documentation": {
              "id": 33574,
              "nodeType": "StructuredDocumentation",
              "src": "14909:586:103",
              "text": " @notice Verifies that the provided event is still scheduled under the terms, the current state of the\n contract and the current state of the underlying.\n param _event event for which to check if its still scheduled\n param terms terms of the contract\n param state current state of the contract\n param hasUnderlying boolean indicating whether the contract has an underlying contract\n param underlyingState state of the underlying (empty state object if non-existing)\n @return boolean indicating whether event is still scheduled"
            },
            "functionSelector": "dceda254",
            "id": 33593,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isEventScheduled",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 33586,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "15755:8:103"
            },
            "parameters": {
              "id": 33585,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33576,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33593,
                  "src": "15535:7:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 33575,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15535:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33578,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33593,
                  "src": "15565:17:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33577,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "15565:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33580,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33593,
                  "src": "15604:14:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33579,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "15604:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33582,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33593,
                  "src": "15640:4:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 33581,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15640:4:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33584,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33593,
                  "src": "15674:14:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33583,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "15674:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15525:191:103"
            },
            "returnParameters": {
              "id": 33589,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33588,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33593,
                  "src": "15781:4:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 33587,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15781:4:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15780:6:103"
            },
            "scope": 33930,
            "src": "15500:319:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 33775,
              "nodeType": "Block",
              "src": "16696:1556:103",
              "statements": [
                {
                  "assignments": [
                    33608,
                    33610
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33608,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 33775,
                      "src": "16707:19:103",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 33607,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "16707:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 33610,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 33775,
                      "src": "16728:20:103",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33609,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16728:7:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 33614,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 33612,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33600,
                        "src": "16764:6:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 33611,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "16752:11:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 33613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16752:19:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16706:65:103"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33618,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33615,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "16875:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33616,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16888:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33617,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "AD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16888:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16875:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33626,
                  "nodeType": "IfStatement",
                  "src": "16871:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33620,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "16920:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33621,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "16927:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33622,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "16934:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33623,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "16948:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33619,
                        "name": "STF_PAM_AD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34446,
                        "src": "16909:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33624,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16909:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33625,
                    "nodeType": "Return",
                    "src": "16902:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33627,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "16975:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33628,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16988:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "FP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16988:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16975:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33638,
                  "nodeType": "IfStatement",
                  "src": "16971:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33632,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17020:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33633,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17027:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33634,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17034:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33635,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17048:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33631,
                        "name": "STF_PAM_FP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34525,
                        "src": "17009:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33636,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17009:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33637,
                    "nodeType": "Return",
                    "src": "17002:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33639,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17075:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33640,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17088:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33641,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17088:13:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17075:26:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33650,
                  "nodeType": "IfStatement",
                  "src": "17071:92:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33644,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17122:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33645,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17129:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33646,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17136:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33647,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17150:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33643,
                        "name": "STF_PAM_IED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34574,
                        "src": "17110:11:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33648,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17110:53:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33649,
                    "nodeType": "Return",
                    "src": "17103:60:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33654,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33651,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17177:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33652,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17190:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33653,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IPCI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17190:14:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17177:27:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33662,
                  "nodeType": "IfStatement",
                  "src": "17173:94:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33656,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17226:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33657,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17233:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33658,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17240:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33659,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17254:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33655,
                        "name": "STF_PAM_IPCI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34675,
                        "src": "17213:12:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33660,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17213:54:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33661,
                    "nodeType": "Return",
                    "src": "17206:61:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33663,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17281:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33664,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17294:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33665,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17294:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17281:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33674,
                  "nodeType": "IfStatement",
                  "src": "17277:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33668,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17326:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33669,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17333:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33670,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17340:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33671,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17354:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33667,
                        "name": "STF_PAM_IP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34754,
                        "src": "17315:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33672,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17315:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33673,
                    "nodeType": "Return",
                    "src": "17308:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33678,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33675,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17381:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33676,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17394:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33677,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17394:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17381:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33686,
                  "nodeType": "IfStatement",
                  "src": "17377:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33680,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17426:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33681,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17433:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33682,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17440:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33683,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17454:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33679,
                        "name": "STF_PAM_PP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34845,
                        "src": "17415:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33684,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17415:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33685,
                    "nodeType": "Return",
                    "src": "17408:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33687,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17481:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33688,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17494:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33689,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "MD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17494:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17481:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33698,
                  "nodeType": "IfStatement",
                  "src": "17477:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33692,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17526:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33693,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17533:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33694,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17540:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33695,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17554:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33691,
                        "name": "STF_PAM_MD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 35505,
                        "src": "17515:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33696,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17515:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33697,
                    "nodeType": "Return",
                    "src": "17508:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33702,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33699,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17581:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33700,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17594:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33701,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PY",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17594:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17581:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33710,
                  "nodeType": "IfStatement",
                  "src": "17577:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33704,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17626:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33705,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17633:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33706,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17640:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33707,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17654:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33703,
                        "name": "STF_PAM_PY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 35033,
                        "src": "17615:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33708,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17615:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33709,
                    "nodeType": "Return",
                    "src": "17608:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33714,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33711,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17681:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33712,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17694:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33713,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RRF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17694:13:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17681:26:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33722,
                  "nodeType": "IfStatement",
                  "src": "17677:92:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33716,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17728:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33717,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17735:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33718,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17742:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33719,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17756:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33715,
                        "name": "STF_PAM_RRF",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 35131,
                        "src": "17716:11:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33720,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17716:53:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33721,
                    "nodeType": "Return",
                    "src": "17709:60:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33723,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17783:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33724,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17796:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33725,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17796:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17783:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33734,
                  "nodeType": "IfStatement",
                  "src": "17779:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33728,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17828:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33729,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17835:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33730,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17842:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33731,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17856:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33727,
                        "name": "STF_PAM_RR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 35268,
                        "src": "17817:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33732,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17817:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33733,
                    "nodeType": "Return",
                    "src": "17810:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33738,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33735,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17883:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33736,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17896:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33737,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "SC",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17896:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17883:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33746,
                  "nodeType": "IfStatement",
                  "src": "17879:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33740,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17928:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33741,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17935:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33742,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17942:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33743,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17956:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33739,
                        "name": "STF_PAM_SC",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 35401,
                        "src": "17917:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33744,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17917:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33745,
                    "nodeType": "Return",
                    "src": "17910:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33747,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17983:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33748,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17996:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33749,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "TD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17996:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17983:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33758,
                  "nodeType": "IfStatement",
                  "src": "17979:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33752,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "18028:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33753,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "18035:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33754,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "18042:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33755,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "18056:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33751,
                        "name": "STF_PAM_TD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 35559,
                        "src": "18017:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33756,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18017:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33757,
                    "nodeType": "Return",
                    "src": "18010:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33759,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "18083:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33760,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "18096:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33761,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CE",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18096:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18083:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33770,
                  "nodeType": "IfStatement",
                  "src": "18079:91:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33764,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "18129:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33765,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "18136:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33766,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "18143:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33767,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "18157:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33763,
                        "name": "STF_PAM_CE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 35692,
                        "src": "18118:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33768,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18118:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33769,
                    "nodeType": "Return",
                    "src": "18111:59:103"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "50414d456e67696e652e73746174655472616e736974696f6e46756e6374696f6e3a204154545249425554455f4e4f545f464f554e44",
                        "id": 33772,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18188:56:103",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_921bf018c382fd194b5583a0deab63a1acbed6362f7a0443f612352e6fb47163",
                          "typeString": "literal_string \"PAMEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND\""
                        },
                        "value": "PAMEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_921bf018c382fd194b5583a0deab63a1acbed6362f7a0443f612352e6fb47163",
                          "typeString": "literal_string \"PAMEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND\""
                        }
                      ],
                      "id": 33771,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "18181:6:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 33773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18181:64:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 33774,
                  "nodeType": "ExpressionStatement",
                  "src": "18181:64:103"
                }
              ]
            },
            "documentation": {
              "id": 33594,
              "nodeType": "StructuredDocumentation",
              "src": "15825:649:103",
              "text": " @notice Implements abstract method which is defined in BaseEngine.\n Applies an event to the current state of the contract and returns the resulting state.\n The inheriting Engine contract has to map the events type to the designated STF.\n todo Annuity calculator for RR/RRF events, IPCB events and ICB state variable\n @param terms terms of the contract\n @param state current state of the contract\n @param _event event for which to evaluate the next state for\n @param externalData external data needed for STF evaluation (e.g. rate for RR events)\n @return the resulting contract state"
            },
            "id": 33776,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "stateTransitionFunction",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 33603,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33596,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33776,
                  "src": "16521:21:103",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33595,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "16521:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33598,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33776,
                  "src": "16552:18:103",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33597,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "16552:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33600,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33776,
                  "src": "16580:14:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 33599,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "16580:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33602,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33776,
                  "src": "16604:20:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 33601,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "16604:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16511:119:103"
            },
            "returnParameters": {
              "id": 33606,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33605,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33776,
                  "src": "16678:12:103",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33604,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "16678:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16677:14:103"
            },
            "scope": 33930,
            "src": "16479:1773:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 33928,
              "nodeType": "Block",
              "src": "19094:1282:103",
              "statements": [
                {
                  "assignments": [
                    33791,
                    33793
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33791,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 33928,
                      "src": "19105:19:103",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 33790,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "19105:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 33793,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 33928,
                      "src": "19126:20:103",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33792,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "19126:7:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 33797,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 33795,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33783,
                        "src": "19162:6:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 33794,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "19150:11:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 33796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19150:19:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19104:65:103"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33801,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33798,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19318:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33799,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19331:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33800,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "AD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19331:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19318:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33804,
                  "nodeType": "IfStatement",
                  "src": "19314:39:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 33802,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19352:1:103",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 33789,
                    "id": 33803,
                    "nodeType": "Return",
                    "src": "19345:8:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33808,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33805,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19367:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33806,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19380:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33807,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IPCI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19380:14:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19367:27:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33811,
                  "nodeType": "IfStatement",
                  "src": "19363:41:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 33809,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19403:1:103",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 33789,
                    "id": 33810,
                    "nodeType": "Return",
                    "src": "19396:8:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33815,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33812,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19418:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33813,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19431:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33814,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RRF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19431:13:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19418:26:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33818,
                  "nodeType": "IfStatement",
                  "src": "19414:40:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 33816,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19453:1:103",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 33789,
                    "id": 33817,
                    "nodeType": "Return",
                    "src": "19446:8:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33822,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33819,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19468:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33820,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19481:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33821,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19481:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19468:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33825,
                  "nodeType": "IfStatement",
                  "src": "19464:39:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 33823,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19502:1:103",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 33789,
                    "id": 33824,
                    "nodeType": "Return",
                    "src": "19495:8:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33829,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33826,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19517:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33827,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19530:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33828,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "SC",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19530:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19517:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33832,
                  "nodeType": "IfStatement",
                  "src": "19513:39:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 33830,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19551:1:103",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 33789,
                    "id": 33831,
                    "nodeType": "Return",
                    "src": "19544:8:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33836,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33833,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19566:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33834,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19579:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33835,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CE",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19579:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19566:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33839,
                  "nodeType": "IfStatement",
                  "src": "19562:39:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 33837,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19600:1:103",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 33789,
                    "id": 33838,
                    "nodeType": "Return",
                    "src": "19593:8:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33843,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33840,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19615:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33841,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19628:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33842,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "FP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19628:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19615:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33851,
                  "nodeType": "IfStatement",
                  "src": "19611:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33845,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33779,
                          "src": "19660:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33846,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33781,
                          "src": "19667:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33847,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33793,
                          "src": "19674:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33848,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33785,
                          "src": "19688:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33844,
                        "name": "POF_PAM_FP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34015,
                        "src": "19649:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 33849,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19649:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 33789,
                    "id": 33850,
                    "nodeType": "Return",
                    "src": "19642:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33855,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33852,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19715:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33853,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19728:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33854,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19728:13:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19715:26:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33863,
                  "nodeType": "IfStatement",
                  "src": "19711:92:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33857,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33779,
                          "src": "19762:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33858,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33781,
                          "src": "19769:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33859,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33793,
                          "src": "19776:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33860,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33785,
                          "src": "19790:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33856,
                        "name": "POF_PAM_IED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34047,
                        "src": "19750:11:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 33861,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19750:53:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 33789,
                    "id": 33862,
                    "nodeType": "Return",
                    "src": "19743:60:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33864,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19817:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33865,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19830:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33866,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19830:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19817:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33875,
                  "nodeType": "IfStatement",
                  "src": "19813:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33869,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33779,
                          "src": "19862:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33870,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33781,
                          "src": "19869:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33871,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33793,
                          "src": "19876:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33872,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33785,
                          "src": "19890:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33868,
                        "name": "POF_PAM_IP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34113,
                        "src": "19851:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 33873,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19851:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 33789,
                    "id": 33874,
                    "nodeType": "Return",
                    "src": "19844:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33876,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19917:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33877,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19930:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33878,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19930:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19917:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33887,
                  "nodeType": "IfStatement",
                  "src": "19913:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33881,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33779,
                          "src": "19962:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33882,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33781,
                          "src": "19969:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33883,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33793,
                          "src": "19976:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33884,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33785,
                          "src": "19990:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33880,
                        "name": "POF_PAM_PP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34137,
                        "src": "19951:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 33885,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19951:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 33789,
                    "id": 33886,
                    "nodeType": "Return",
                    "src": "19944:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33891,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33888,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "20017:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33889,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "20030:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33890,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "MD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "20030:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "20017:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33899,
                  "nodeType": "IfStatement",
                  "src": "20013:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33893,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33779,
                          "src": "20062:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33894,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33781,
                          "src": "20069:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33895,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33793,
                          "src": "20076:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33896,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33785,
                          "src": "20090:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33892,
                        "name": "POF_PAM_MD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34160,
                        "src": "20051:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 33897,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20051:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 33789,
                    "id": 33898,
                    "nodeType": "Return",
                    "src": "20044:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33903,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33900,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "20117:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33901,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "20130:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33902,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PY",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "20130:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "20117:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33911,
                  "nodeType": "IfStatement",
                  "src": "20113:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33905,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33779,
                          "src": "20162:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33906,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33781,
                          "src": "20169:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33907,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33793,
                          "src": "20176:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33908,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33785,
                          "src": "20190:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33904,
                        "name": "POF_PAM_PY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34259,
                        "src": "20151:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 33909,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20151:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 33789,
                    "id": 33910,
                    "nodeType": "Return",
                    "src": "20144:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33912,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "20217:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33913,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "20230:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33914,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "TD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "20230:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "20217:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33923,
                  "nodeType": "IfStatement",
                  "src": "20213:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33917,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33779,
                          "src": "20262:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33918,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33781,
                          "src": "20269:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33919,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33793,
                          "src": "20276:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33920,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33785,
                          "src": "20290:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33916,
                        "name": "POF_PAM_TD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34330,
                        "src": "20251:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 33921,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20251:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 33789,
                    "id": 33922,
                    "nodeType": "Return",
                    "src": "20244:59:103"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "50414d456e67696e652e7061796f666646756e6374696f6e3a204154545249425554455f4e4f545f464f554e44",
                        "id": 33925,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20321:47:103",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_789b02771a5dfc4f60ad8d600a6e6b223c6ba450424f38340ffaac2fa3ee386a",
                          "typeString": "literal_string \"PAMEngine.payoffFunction: ATTRIBUTE_NOT_FOUND\""
                        },
                        "value": "PAMEngine.payoffFunction: ATTRIBUTE_NOT_FOUND"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_789b02771a5dfc4f60ad8d600a6e6b223c6ba450424f38340ffaac2fa3ee386a",
                          "typeString": "literal_string \"PAMEngine.payoffFunction: ATTRIBUTE_NOT_FOUND\""
                        }
                      ],
                      "id": 33924,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "20314:6:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 33926,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20314:55:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 33927,
                  "nodeType": "ExpressionStatement",
                  "src": "20314:55:103"
                }
              ]
            },
            "documentation": {
              "id": 33777,
              "nodeType": "StructuredDocumentation",
              "src": "18258:629:103",
              "text": " @notice Implements abstract method which is defined in BaseEngine.\n Computes the payoff for an event under the current state of the contract.\n The inheriting Engine contract has to map the events type to the designated POF.\n todo IPCB events and Icb state variable, Icb state variable updates in IP-paying events\n @param terms terms of the contract\n @param state current state of the contract\n @param _event event for which the payoff should be evaluated\n @param externalData external data needed for POF evaluation (e.g. fxRate)\n @return the payoff of the event"
            },
            "id": 33929,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "payoffFunction",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 33786,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33779,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33929,
                  "src": "18925:21:103",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33778,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "18925:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33781,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33929,
                  "src": "18956:18:103",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33780,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "18956:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33783,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33929,
                  "src": "18984:14:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 33782,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18984:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33785,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33929,
                  "src": "19008:20:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 33784,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "19008:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18915:119:103"
            },
            "returnParameters": {
              "id": 33789,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33788,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33929,
                  "src": "19082:6:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 33787,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19082:6:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19081:8:103"
            },
            "scope": 33930,
            "src": "18892:1484:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 33931,
        "src": "430:19948:103"
      }
    ],
    "src": "41:20338:103"
  },
  "legacyAST": {
    "absolutePath": "@atpar/actus-solidity/contracts/Engines/PAM/PAMEngine.sol",
    "exportedSymbols": {
      "PAMEngine": [
        33930
      ]
    },
    "id": 33931,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 32535,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:103"
      },
      {
        "id": 32536,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:103"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Core.sol",
        "file": "../../Core/Core.sol",
        "id": 32537,
        "nodeType": "ImportDirective",
        "scope": 33931,
        "sourceUnit": 24036,
        "src": "101:29:103",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/PAM/IPAMEngine.sol",
        "file": "./IPAMEngine.sol",
        "id": 32538,
        "nodeType": "ImportDirective",
        "scope": 33931,
        "sourceUnit": 32534,
        "src": "131:26:103",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/PAM/PAMSTF.sol",
        "file": "./PAMSTF.sol",
        "id": 32539,
        "nodeType": "ImportDirective",
        "scope": 33931,
        "sourceUnit": 35694,
        "src": "158:22:103",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/PAM/PAMPOF.sol",
        "file": "./PAMPOF.sol",
        "id": 32540,
        "nodeType": "ImportDirective",
        "scope": 33931,
        "sourceUnit": 34332,
        "src": "181:22:103",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 32542,
              "name": "Core",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24035,
              "src": "452:4:103",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Core_$24035",
                "typeString": "contract Core"
              }
            },
            "id": 32543,
            "nodeType": "InheritanceSpecifier",
            "src": "452:4:103"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 32544,
              "name": "PAMSTF",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 35693,
              "src": "458:6:103",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_PAMSTF_$35693",
                "typeString": "contract PAMSTF"
              }
            },
            "id": 32545,
            "nodeType": "InheritanceSpecifier",
            "src": "458:6:103"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 32546,
              "name": "PAMPOF",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 34331,
              "src": "466:6:103",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_PAMPOF_$34331",
                "typeString": "contract PAMPOF"
              }
            },
            "id": 32547,
            "nodeType": "InheritanceSpecifier",
            "src": "466:6:103"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 32548,
              "name": "IPAMEngine",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 32533,
              "src": "474:10:103",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IPAMEngine_$32533",
                "typeString": "contract IPAMEngine"
              }
            },
            "id": 32549,
            "nodeType": "InheritanceSpecifier",
            "src": "474:10:103"
          }
        ],
        "contractDependencies": [
          22465,
          23277,
          23340,
          23895,
          24013,
          24035,
          24668,
          24758,
          24885,
          24931,
          32432,
          32533,
          34331,
          35693
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 32541,
          "nodeType": "StructuredDocumentation",
          "src": "206:223:103",
          "text": " @title PAMEngine\n @notice Inherits from BaseEngine by implementing STFs, POFs according to the ACTUS standard for a PAM contract\n @dev All numbers except unix timestamp are represented as multiple of 10 ** 18"
        },
        "fullyImplemented": true,
        "id": 33930,
        "linearizedBaseContracts": [
          33930,
          32533,
          32432,
          34331,
          35693,
          24035,
          24931,
          24668,
          24885,
          24013,
          23895,
          23340,
          22465,
          24758,
          23277
        ],
        "name": "PAMEngine",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "baseFunctions": [
              32431
            ],
            "body": {
              "id": 32558,
              "nodeType": "Block",
              "src": "562:40:103",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 32555,
                      "name": "ContractType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22559,
                      "src": "579:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                        "typeString": "type(enum ContractType)"
                      }
                    },
                    "id": 32556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "PAM",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "579:16:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractType_$22559",
                      "typeString": "enum ContractType"
                    }
                  },
                  "functionReturnParameters": 32554,
                  "id": 32557,
                  "nodeType": "Return",
                  "src": "572:23:103"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "cb2ef6f7",
            "id": 32559,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contractType",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 32551,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "530:8:103"
            },
            "parameters": {
              "id": 32550,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "513:2:103"
            },
            "returnParameters": {
              "id": 32554,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32553,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32559,
                  "src": "548:12:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ContractType_$22559",
                    "typeString": "enum ContractType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32552,
                    "name": "ContractType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22559,
                    "src": "548:12:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractType_$22559",
                      "typeString": "enum ContractType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "547:14:103"
            },
            "scope": 33930,
            "src": "492:110:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32462
            ],
            "body": {
              "id": 32581,
              "nodeType": "Block",
              "src": "1251:141:103",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 32575,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32562,
                        "src": "1305:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 32576,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32564,
                        "src": "1324:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 32577,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32566,
                        "src": "1343:6:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 32578,
                        "name": "externalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32568,
                        "src": "1363:12:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 32574,
                      "name": "stateTransitionFunction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33776,
                      "src": "1268:23:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                        "typeString": "function (struct PAMTerms memory,struct State memory,bytes32,bytes32) pure returns (struct State memory)"
                      }
                    },
                    "id": 32579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1268:117:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 32573,
                  "id": 32580,
                  "nodeType": "Return",
                  "src": "1261:124:103"
                }
              ]
            },
            "documentation": {
              "id": 32560,
              "nodeType": "StructuredDocumentation",
              "src": "608:403:103",
              "text": " Applys an event to the current state of a contract and returns the resulting contract state.\n @param terms terms of the contract\n @param state current state of the contract\n @param _event event to be applied to the contract state\n @param externalData external data needed for STF evaluation (e.g. rate for RR events)\n @return the resulting contract state"
            },
            "functionSelector": "6942d1a8",
            "id": 32582,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeStateForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 32570,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1207:8:103"
            },
            "parameters": {
              "id": 32569,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32562,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32582,
                  "src": "1055:23:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32561,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "1055:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32564,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32582,
                  "src": "1088:20:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32563,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1088:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32566,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32582,
                  "src": "1118:14:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 32565,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1118:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32568,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32582,
                  "src": "1142:20:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 32567,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1142:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1045:123:103"
            },
            "returnParameters": {
              "id": 32573,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32572,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32582,
                  "src": "1233:12:103",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32571,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1233:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1232:14:103"
            },
            "scope": 33930,
            "src": "1016:376:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32476
            ],
            "body": {
              "id": 32632,
              "nodeType": "Block",
              "src": "2006:504:103",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 32609,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 32603,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 32597,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32585,
                          "src": "2100:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                            "typeString": "struct PAMTerms calldata"
                          }
                        },
                        "id": 32598,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "settlementCurrency",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22939,
                        "src": "2100:24:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 32601,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2136:1:103",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 32600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2128:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 32599,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2128:7:103",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 32602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2128:10:103",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "2100:38:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 32608,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 32604,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32585,
                          "src": "2142:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                            "typeString": "struct PAMTerms calldata"
                          }
                        },
                        "id": 32605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "currency",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22937,
                        "src": "2142:14:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 32606,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32585,
                          "src": "2160:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                            "typeString": "struct PAMTerms calldata"
                          }
                        },
                        "id": 32607,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "settlementCurrency",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22939,
                        "src": "2160:24:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "2142:42:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2100:84:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 32624,
                  "nodeType": "IfStatement",
                  "src": "2096:282:103",
                  "trueBody": {
                    "id": 32623,
                    "nodeType": "Block",
                    "src": "2186:192:103",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 32619,
                                  "name": "externalData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32591,
                                  "src": "2353:12:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 32618,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2346:6:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int256_$",
                                  "typeString": "type(int256)"
                                },
                                "typeName": {
                                  "id": 32617,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2346:6:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 32620,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2346:20:103",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 32611,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32585,
                                  "src": "2239:5:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                    "typeString": "struct PAMTerms calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 32612,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32587,
                                  "src": "2262:5:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                                    "typeString": "struct State calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 32613,
                                  "name": "_event",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32589,
                                  "src": "2285:6:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 32614,
                                  "name": "externalData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32591,
                                  "src": "2309:12:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                    "typeString": "struct PAMTerms calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                                    "typeString": "struct State calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 32610,
                                "name": "payoffFunction",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33929,
                                "src": "2207:14:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                                  "typeString": "function (struct PAMTerms memory,struct State memory,bytes32,bytes32) pure returns (int256)"
                                }
                              },
                              "id": 32615,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2207:128:103",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 32616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "2207:138:103",
                            "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": 32621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2207:160:103",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 32596,
                        "id": 32622,
                        "nodeType": "Return",
                        "src": "2200:167:103"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 32626,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32585,
                        "src": "2423:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 32627,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32587,
                        "src": "2442:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 32628,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32589,
                        "src": "2461:6:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 32629,
                        "name": "externalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32591,
                        "src": "2481:12:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 32625,
                      "name": "payoffFunction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33929,
                      "src": "2395:14:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                        "typeString": "function (struct PAMTerms memory,struct State memory,bytes32,bytes32) pure returns (int256)"
                      }
                    },
                    "id": 32630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2395:108:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 32596,
                  "id": 32631,
                  "nodeType": "Return",
                  "src": "2388:115:103"
                }
              ]
            },
            "documentation": {
              "id": 32583,
              "nodeType": "StructuredDocumentation",
              "src": "1398:373:103",
              "text": " Evaluates the payoff for an event under the current state of the contract.\n @param terms terms of the contract\n @param state current state of the contract\n @param _event event for which the payoff should be evaluated\n @param externalData external data needed for POF evaluation (e.g. fxRate)\n @return the payoff of the event"
            },
            "functionSelector": "5ada17d8",
            "id": 32633,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computePayoffForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 32593,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1968:8:103"
            },
            "parameters": {
              "id": 32592,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32585,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32633,
                  "src": "1816:23:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32584,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "1816:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32587,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32633,
                  "src": "1849:20:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32586,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1849:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32589,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32633,
                  "src": "1879:14:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 32588,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1879:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32591,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32633,
                  "src": "1903:20:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 32590,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1903:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1806:123:103"
            },
            "returnParameters": {
              "id": 32596,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32595,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32633,
                  "src": "1994:6:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 32594,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1994:6:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1993:8:103"
            },
            "scope": 33930,
            "src": "1776:734:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32448
            ],
            "body": {
              "id": 32708,
              "nodeType": "Block",
              "src": "2835:551:103",
              "statements": [
                {
                  "assignments": [
                    32643
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32643,
                      "mutability": "mutable",
                      "name": "state",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 32708,
                      "src": "2845:18:103",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 32642,
                        "name": "State",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22673,
                        "src": "2845:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                          "typeString": "struct State"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 32644,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2845:18:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32645,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32643,
                        "src": "2874:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 32647,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "contractPerformance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22634,
                      "src": "2874:25:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32648,
                        "name": "ContractPerformance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22513,
                        "src": "2902:19:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                          "typeString": "type(enum ContractPerformance)"
                        }
                      },
                      "id": 32649,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2902:22:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "src": "2874:50:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                      "typeString": "enum ContractPerformance"
                    }
                  },
                  "id": 32651,
                  "nodeType": "ExpressionStatement",
                  "src": "2874:50:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32656,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32652,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32643,
                        "src": "2934:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 32654,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "notionalScalingMultiplier",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22658,
                      "src": "2934:31:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 32655,
                      "name": "ONE_POINT_ZERO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22458,
                      "src": "2968:14:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "2934:48:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 32657,
                  "nodeType": "ExpressionStatement",
                  "src": "2934:48:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32658,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32643,
                        "src": "2992:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 32660,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "interestScalingMultiplier",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22656,
                      "src": "2992:31:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 32661,
                      "name": "ONE_POINT_ZERO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22458,
                      "src": "3026:14:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "2992:48:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 32663,
                  "nodeType": "ExpressionStatement",
                  "src": "2992:48:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32664,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32643,
                        "src": "3050:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 32666,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "3050:16:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32667,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32636,
                        "src": "3069:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      "id": 32668,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22945,
                      "src": "3069:16:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3050:35:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 32670,
                  "nodeType": "ExpressionStatement",
                  "src": "3050:35:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32676,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32671,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32643,
                        "src": "3095:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 32673,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "maturityDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22640,
                      "src": "3095:18:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32674,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32636,
                        "src": "3116:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      "id": 32675,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "maturityDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22949,
                      "src": "3116:18:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3095:39:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 32677,
                  "nodeType": "ExpressionStatement",
                  "src": "3095:39:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32683,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32678,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32643,
                        "src": "3144:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 32680,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "notionalPrincipal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22648,
                      "src": "3144:23:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32681,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32636,
                        "src": "3170:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      "id": 32682,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "notionalPrincipal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22963,
                      "src": "3170:23:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3144:49:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 32684,
                  "nodeType": "ExpressionStatement",
                  "src": "3144:49:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32685,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32643,
                        "src": "3203:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 32687,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nominalInterestRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22654,
                      "src": "3203:25:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32688,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32636,
                        "src": "3231:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      "id": 32689,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nominalInterestRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22965,
                      "src": "3231:25:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3203:53:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 32691,
                  "nodeType": "ExpressionStatement",
                  "src": "3203:53:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32697,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32692,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32643,
                        "src": "3266:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 32694,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "3266:21:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32695,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32636,
                        "src": "3290:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      "id": 32696,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22967,
                      "src": "3290:21:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3266:45:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 32698,
                  "nodeType": "ExpressionStatement",
                  "src": "3266:45:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32704,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32699,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32643,
                        "src": "3321:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 32701,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "3321:16:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32702,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32636,
                        "src": "3340:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      "id": 32703,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22977,
                      "src": "3340:16:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3321:35:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 32705,
                  "nodeType": "ExpressionStatement",
                  "src": "3321:35:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32706,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 32643,
                    "src": "3374:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 32641,
                  "id": 32707,
                  "nodeType": "Return",
                  "src": "3367:12:103"
                }
              ]
            },
            "documentation": {
              "id": 32634,
              "nodeType": "StructuredDocumentation",
              "src": "2516:178:103",
              "text": " @notice Initialize contract state space based on the contract terms.\n @param terms terms of the contract\n @return the initial state of the contract"
            },
            "functionSelector": "4c7c3fd6",
            "id": 32709,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeInitialState",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 32638,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2791:8:103"
            },
            "parameters": {
              "id": 32637,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32636,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32709,
                  "src": "2728:23:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32635,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "2728:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2727:25:103"
            },
            "returnParameters": {
              "id": 32641,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32640,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32709,
                  "src": "2817:12:103",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32639,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2817:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2816:14:103"
            },
            "scope": 33930,
            "src": "2699:687:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32489
            ],
            "body": {
              "id": 32843,
              "nodeType": "Block",
              "src": "3975:1042:103",
              "statements": [
                {
                  "assignments": [
                    32728
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32728,
                      "mutability": "mutable",
                      "name": "events",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 32843,
                      "src": "3985:46:103",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                        "typeString": "bytes32[120]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 32726,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3985:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 32727,
                        "length": {
                          "argumentTypes": null,
                          "id": 32725,
                          "name": "MAX_EVENT_SCHEDULE_SIZE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22464,
                          "src": "3993:23:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "3985:32:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$120_storage_ptr",
                          "typeString": "bytes32[120]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 32729,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3985:46:103"
                },
                {
                  "assignments": [
                    32731
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32731,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 32843,
                      "src": "4041:12:103",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 32730,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "4041:6:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 32732,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4041:12:103"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 32743,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 32736,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 32733,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32712,
                          "src": "4096:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                            "typeString": "struct PAMTerms calldata"
                          }
                        },
                        "id": 32734,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "purchaseDate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22951,
                        "src": "4096:18:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 32735,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4118:1:103",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "4096:23:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 32738,
                            "name": "terms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32712,
                            "src": "4135:5:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                              "typeString": "struct PAMTerms calldata"
                            }
                          },
                          "id": 32739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "initialExchangeDate",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22947,
                          "src": "4135:25:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 32740,
                          "name": "segmentStart",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32714,
                          "src": "4162:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 32741,
                          "name": "segmentEnd",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32716,
                          "src": "4176:10:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 32737,
                        "name": "isInSegment",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24667,
                        "src": "4123:11:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                        }
                      },
                      "id": 32742,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4123:64:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4096:91:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 32759,
                  "nodeType": "IfStatement",
                  "src": "4092:212:103",
                  "trueBody": {
                    "id": 32758,
                    "nodeType": "Block",
                    "src": "4189:115:103",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 32744,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32728,
                              "src": "4203:6:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 32746,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 32745,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32731,
                              "src": "4210:5:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4203:13:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32748,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "4231:9:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 32749,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "IED",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4231:13:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32750,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32712,
                                  "src": "4246:5:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                    "typeString": "struct PAMTerms calldata"
                                  }
                                },
                                "id": 32751,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "initialExchangeDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22947,
                                "src": "4246:25:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 32747,
                              "name": "encodeEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24702,
                              "src": "4219:11:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                              }
                            },
                            "id": 32752,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4219:53:103",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4203:69:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 32754,
                        "nodeType": "ExpressionStatement",
                        "src": "4203:69:103"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "4286:7:103",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 32755,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32731,
                            "src": "4286:5:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 32757,
                        "nodeType": "ExpressionStatement",
                        "src": "4286:7:103"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 32763,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32760,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32712,
                        "src": "4338:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      "id": 32761,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "purchaseDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22951,
                      "src": "4338:18:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 32762,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4360:1:103",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4338:23:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 32787,
                  "nodeType": "IfStatement",
                  "src": "4334:236:103",
                  "trueBody": {
                    "id": 32786,
                    "nodeType": "Block",
                    "src": "4363:207:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32765,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32712,
                                "src": "4393:5:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                  "typeString": "struct PAMTerms calldata"
                                }
                              },
                              "id": 32766,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "purchaseDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22951,
                              "src": "4393:18:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 32767,
                              "name": "segmentStart",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32714,
                              "src": "4413:12:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 32768,
                              "name": "segmentEnd",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32716,
                              "src": "4427:10:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 32764,
                            "name": "isInSegment",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24667,
                            "src": "4381:11:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                            }
                          },
                          "id": 32769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4381:57:103",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 32785,
                        "nodeType": "IfStatement",
                        "src": "4377:183:103",
                        "trueBody": {
                          "id": 32784,
                          "nodeType": "Block",
                          "src": "4440:120:103",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 32770,
                                    "name": "events",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32728,
                                    "src": "4458:6:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                      "typeString": "bytes32[120] memory"
                                    }
                                  },
                                  "id": 32772,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 32771,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32731,
                                    "src": "4465:5:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4458:13:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 32774,
                                        "name": "EventType",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22610,
                                        "src": "4486:9:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                          "typeString": "type(enum EventType)"
                                        }
                                      },
                                      "id": 32775,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "PRD",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "4486:13:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 32776,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32712,
                                        "src": "4501:5:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                          "typeString": "struct PAMTerms calldata"
                                        }
                                      },
                                      "id": 32777,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "purchaseDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22951,
                                      "src": "4501:18:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 32773,
                                    "name": "encodeEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24702,
                                    "src": "4474:11:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 32778,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4474:46:103",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "4458:62:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 32780,
                              "nodeType": "ExpressionStatement",
                              "src": "4458:62:103"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32782,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "4538:7:103",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 32781,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32731,
                                  "src": "4538:5:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 32783,
                              "nodeType": "ExpressionStatement",
                              "src": "4538:7:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 32789,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32712,
                          "src": "4628:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                            "typeString": "struct PAMTerms calldata"
                          }
                        },
                        "id": 32790,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "maturityDate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22949,
                        "src": "4628:18:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 32791,
                        "name": "segmentStart",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32714,
                        "src": "4648:12:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 32792,
                        "name": "segmentEnd",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32716,
                        "src": "4662:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 32788,
                      "name": "isInSegment",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24667,
                      "src": "4616:11:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                      }
                    },
                    "id": 32793,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4616:57:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 32809,
                  "nodeType": "IfStatement",
                  "src": "4612:170:103",
                  "trueBody": {
                    "id": 32808,
                    "nodeType": "Block",
                    "src": "4675:107:103",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 32794,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32728,
                              "src": "4689:6:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 32796,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 32795,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32731,
                              "src": "4696:5:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4689:13:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32798,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "4717:9:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 32799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "MD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4717:12:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32800,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32712,
                                  "src": "4731:5:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                    "typeString": "struct PAMTerms calldata"
                                  }
                                },
                                "id": 32801,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maturityDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22949,
                                "src": "4731:18:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 32797,
                              "name": "encodeEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24702,
                              "src": "4705:11:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                              }
                            },
                            "id": 32802,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4705:45:103",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4689:61:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 32804,
                        "nodeType": "ExpressionStatement",
                        "src": "4689:61:103"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32806,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "4764:7:103",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 32805,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32731,
                            "src": "4764:5:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 32807,
                        "nodeType": "ExpressionStatement",
                        "src": "4764:7:103"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    32814
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32814,
                      "mutability": "mutable",
                      "name": "schedule",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 32843,
                      "src": "4843:25:103",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 32812,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4843:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 32813,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4843:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 32820,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 32818,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32731,
                        "src": "4885:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 32817,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "4871:13:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 32815,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4875:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 32816,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4875:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 32819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4871:20:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4843:48:103"
                },
                {
                  "body": {
                    "id": 32839,
                    "nodeType": "Block",
                    "src": "4937:48:103",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 32831,
                              "name": "schedule",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32814,
                              "src": "4951:8:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 32833,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 32832,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32822,
                              "src": "4960:1:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4951:11:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 32834,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32728,
                              "src": "4965:6:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 32836,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 32835,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32822,
                              "src": "4972:1:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4965:9:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4951:23:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 32838,
                        "nodeType": "ExpressionStatement",
                        "src": "4951:23:103"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 32827,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 32825,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32822,
                      "src": "4921:1:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 32826,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32731,
                      "src": "4925:5:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "4921:9:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 32840,
                  "initializationExpression": {
                    "assignments": [
                      32822
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 32822,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 32840,
                        "src": "4906:9:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32821,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4906:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 32824,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 32823,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4918:1:103",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4906:13:103"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 32829,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4932:3:103",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 32828,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32822,
                        "src": "4932:1:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 32830,
                    "nodeType": "ExpressionStatement",
                    "src": "4932:3:103"
                  },
                  "nodeType": "ForStatement",
                  "src": "4901:84:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 32841,
                    "name": "schedule",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 32814,
                    "src": "5002:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 32722,
                  "id": 32842,
                  "nodeType": "Return",
                  "src": "4995:15:103"
                }
              ]
            },
            "documentation": {
              "id": 32710,
              "nodeType": "StructuredDocumentation",
              "src": "3392:354:103",
              "text": " @notice Computes a schedule segment of non-cyclic contract events based on the contract terms\n and the specified timestamps.\n @param terms terms of the contract\n @param segmentStart start timestamp of the segment\n @param segmentEnd end timestamp of the segement\n @return segment of the non-cyclic schedule"
            },
            "functionSelector": "e8d0c672",
            "id": 32844,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeNonCyclicScheduleSegment",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 32718,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3927:8:103"
            },
            "parameters": {
              "id": 32717,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32712,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32844,
                  "src": "3801:23:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32711,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "3801:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32714,
                  "mutability": "mutable",
                  "name": "segmentStart",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32844,
                  "src": "3834:20:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 32713,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3834:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32716,
                  "mutability": "mutable",
                  "name": "segmentEnd",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32844,
                  "src": "3864:18:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 32715,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3864:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3791:97:103"
            },
            "returnParameters": {
              "id": 32722,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32721,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 32844,
                  "src": "3953:16:103",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 32719,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "3953:7:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 32720,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3953:9:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3952:18:103"
            },
            "scope": 33930,
            "src": "3751:1266:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32516
            ],
            "body": {
              "id": 33319,
              "nodeType": "Block",
              "src": "5672:5273:103",
              "statements": [
                {
                  "assignments": [
                    32865
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32865,
                      "mutability": "mutable",
                      "name": "events",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 33319,
                      "src": "5682:46:103",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                        "typeString": "bytes32[120]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 32863,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5682:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 32864,
                        "length": {
                          "argumentTypes": null,
                          "id": 32862,
                          "name": "MAX_EVENT_SCHEDULE_SIZE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22464,
                          "src": "5690:23:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "5682:32:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$120_storage_ptr",
                          "typeString": "bytes32[120]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 32866,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5682:46:103"
                },
                {
                  "assignments": [
                    32868
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32868,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 33319,
                      "src": "5738:13:103",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 32867,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5738:7:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 32869,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5738:13:103"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 32873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 32870,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32853,
                      "src": "5881:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32871,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "5894:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 32872,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5894:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "5881:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 32954,
                  "nodeType": "IfStatement",
                  "src": "5877:996:103",
                  "trueBody": {
                    "id": 32953,
                    "nodeType": "Block",
                    "src": "5908:965:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 32877,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 32874,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32847,
                              "src": "5926:5:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                "typeString": "struct PAMTerms calldata"
                              }
                            },
                            "id": 32875,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfInterestPayment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22955,
                            "src": "5926:38:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 32876,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5968:1:103",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5926:43:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 32952,
                        "nodeType": "IfStatement",
                        "src": "5922:941:103",
                        "trueBody": {
                          "id": 32951,
                          "nodeType": "Block",
                          "src": "5971:892:103",
                          "statements": [
                            {
                              "assignments": [
                                32883
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 32883,
                                  "mutability": "mutable",
                                  "name": "interestPaymentSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 32951,
                                  "src": "5989:54:103",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 32881,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5989:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32882,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 32880,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "5997:14:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "5989:23:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 32897,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32885,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "6096:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 32886,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22955,
                                    "src": "6096:38:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32887,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "6156:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 32888,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maturityDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22949,
                                    "src": "6156:18:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32889,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "6196:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 32890,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22999,
                                    "src": "6196:28:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32891,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "6246:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 32892,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "6246:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 32893,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6294:4:103",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 32894,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32849,
                                    "src": "6320:12:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 32895,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32851,
                                    "src": "6354:10:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 32884,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "6046:28:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 32896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6046:336:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5989:393:103"
                            },
                            {
                              "body": {
                                "id": 32949,
                                "nodeType": "Block",
                                "src": "6443:406:103",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 32912,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 32908,
                                          "name": "interestPaymentSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32883,
                                          "src": "6469:23:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 32910,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 32909,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32899,
                                          "src": "6493:1:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6469:26:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 32911,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6499:1:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "6469:31:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 32914,
                                    "nodeType": "IfStatement",
                                    "src": "6465:42:103",
                                    "trueBody": {
                                      "id": 32913,
                                      "nodeType": "Break",
                                      "src": "6502:5:103"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 32920,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 32915,
                                          "name": "interestPaymentSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32883,
                                          "src": "6533:23:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 32917,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 32916,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32899,
                                          "src": "6557:1:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6533:26:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 32918,
                                          "name": "terms",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32847,
                                          "src": "6563:5:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                            "typeString": "struct PAMTerms calldata"
                                          }
                                        },
                                        "id": 32919,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "capitalizationEndDate",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22953,
                                        "src": "6563:27:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6533:57:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 32922,
                                    "nodeType": "IfStatement",
                                    "src": "6529:71:103",
                                    "trueBody": {
                                      "id": 32921,
                                      "nodeType": "Continue",
                                      "src": "6592:8:103"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 32931,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 32924,
                                              "name": "interestPaymentSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 32883,
                                              "src": "6638:23:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 32926,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 32925,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 32899,
                                              "src": "6662:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "6638:26:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 32927,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32849,
                                            "src": "6666:12:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 32928,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32851,
                                            "src": "6680:10:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 32923,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "6626:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 32929,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6626:65:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 32930,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6695:5:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "6626:74:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 32933,
                                    "nodeType": "IfStatement",
                                    "src": "6622:88:103",
                                    "trueBody": {
                                      "id": 32932,
                                      "nodeType": "Continue",
                                      "src": "6702:8:103"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32944,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 32934,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32865,
                                          "src": "6732:6:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 32936,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 32935,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32868,
                                          "src": "6739:5:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "6732:13:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 32938,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "6760:9:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 32939,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "IP",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "6760:12:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 32940,
                                              "name": "interestPaymentSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 32883,
                                              "src": "6774:23:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 32942,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 32941,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 32899,
                                              "src": "6798:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "6774:26:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 32937,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "6748:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 32943,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6748:53:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "6732:69:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 32945,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6732:69:103"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32947,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "6823:7:103",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 32946,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32868,
                                        "src": "6823:5:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32948,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6823:7:103"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 32904,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 32902,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32899,
                                  "src": "6418:1:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 32903,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "6422:14:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6418:18:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 32950,
                              "initializationExpression": {
                                "assignments": [
                                  32899
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 32899,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 32950,
                                    "src": "6405:7:103",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 32898,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6405:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 32901,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 32900,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6415:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "6405:11:103"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32906,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "6438:3:103",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 32905,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32899,
                                    "src": "6438:1:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 32907,
                                "nodeType": "ExpressionStatement",
                                "src": "6438:3:103"
                              },
                              "nodeType": "ForStatement",
                              "src": "6400:449:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 32958,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 32955,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32853,
                      "src": "6903:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 32956,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "6916:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 32957,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IPCI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6916:14:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "6903:27:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33047,
                  "nodeType": "IfStatement",
                  "src": "6899:1101:103",
                  "trueBody": {
                    "id": 33046,
                    "nodeType": "Block",
                    "src": "6932:1068:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 32967,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 32962,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32959,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32847,
                                "src": "6950:5:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                  "typeString": "struct PAMTerms calldata"
                                }
                              },
                              "id": 32960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cycleAnchorDateOfInterestPayment",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22955,
                              "src": "6950:38:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 32961,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6992:1:103",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6950:43:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 32966,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32963,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32847,
                                "src": "6997:5:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                  "typeString": "struct PAMTerms calldata"
                                }
                              },
                              "id": 32964,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "capitalizationEndDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22953,
                              "src": "6997:27:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 32965,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7028:1:103",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6997:32:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6950:79:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33045,
                        "nodeType": "IfStatement",
                        "src": "6946:1044:103",
                        "trueBody": {
                          "id": 33044,
                          "nodeType": "Block",
                          "src": "7031:959:103",
                          "statements": [
                            {
                              "assignments": [
                                32969
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 32969,
                                  "mutability": "mutable",
                                  "name": "cycleOfInterestCapitalization",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33044,
                                  "src": "7049:40:103",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                    "typeString": "struct IPS"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 32968,
                                    "name": "IPS",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 22486,
                                    "src": "7049:3:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_storage_ptr",
                                      "typeString": "struct IPS"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 32972,
                              "initialValue": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32970,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32847,
                                  "src": "7092:5:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                    "typeString": "struct PAMTerms calldata"
                                  }
                                },
                                "id": 32971,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "cycleOfInterestPayment",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22999,
                                "src": "7092:28:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                  "typeString": "struct IPS calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7049:71:103"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32978,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32973,
                                    "name": "cycleOfInterestCapitalization",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32969,
                                    "src": "7138:29:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    }
                                  },
                                  "id": 32975,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "s",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22483,
                                  "src": "7138:31:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_S_$22477",
                                    "typeString": "enum S"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32976,
                                    "name": "S",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22477,
                                    "src": "7172:1:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_S_$22477_$",
                                      "typeString": "type(enum S)"
                                    }
                                  },
                                  "id": 32977,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "SHORT",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7172:7:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_S_$22477",
                                    "typeString": "enum S"
                                  }
                                },
                                "src": "7138:41:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_S_$22477",
                                  "typeString": "enum S"
                                }
                              },
                              "id": 32979,
                              "nodeType": "ExpressionStatement",
                              "src": "7138:41:103"
                            },
                            {
                              "assignments": [
                                32985
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 32985,
                                  "mutability": "mutable",
                                  "name": "interestPaymentSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33044,
                                  "src": "7197:54:103",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 32983,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7197:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32984,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 32982,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "7205:14:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "7197:23:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 32998,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32987,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "7304:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 32988,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22955,
                                    "src": "7304:38:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32989,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "7364:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 32990,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "capitalizationEndDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22953,
                                    "src": "7364:27:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 32991,
                                    "name": "cycleOfInterestCapitalization",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32969,
                                    "src": "7413:29:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32992,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "7464:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 32993,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "7464:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 32994,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7512:4:103",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 32995,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32849,
                                    "src": "7538:12:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 32996,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32851,
                                    "src": "7572:10:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 32986,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "7254:28:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 32997,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7254:346:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7197:403:103"
                            },
                            {
                              "body": {
                                "id": 33042,
                                "nodeType": "Block",
                                "src": "7661:315:103",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 33013,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 33009,
                                          "name": "interestPaymentSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32985,
                                          "src": "7687:23:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 33011,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 33010,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33000,
                                          "src": "7711:1:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "7687:26:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 33012,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7717:1:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "7687:31:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 33015,
                                    "nodeType": "IfStatement",
                                    "src": "7683:42:103",
                                    "trueBody": {
                                      "id": 33014,
                                      "nodeType": "Break",
                                      "src": "7720:5:103"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 33024,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 33017,
                                              "name": "interestPaymentSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 32985,
                                              "src": "7763:23:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 33019,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 33018,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33000,
                                              "src": "7787:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "7763:26:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 33020,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32849,
                                            "src": "7791:12:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 33021,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32851,
                                            "src": "7805:10:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 33016,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "7751:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 33022,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7751:65:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 33023,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7820:5:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "7751:74:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 33026,
                                    "nodeType": "IfStatement",
                                    "src": "7747:88:103",
                                    "trueBody": {
                                      "id": 33025,
                                      "nodeType": "Continue",
                                      "src": "7827:8:103"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33037,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 33027,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32865,
                                          "src": "7857:6:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 33029,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 33028,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32868,
                                          "src": "7864:5:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "7857:13:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 33031,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "7885:9:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 33032,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "IPCI",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "7885:14:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 33033,
                                              "name": "interestPaymentSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 32985,
                                              "src": "7901:23:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 33035,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 33034,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33000,
                                              "src": "7925:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "7901:26:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 33030,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "7873:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 33036,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7873:55:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "7857:71:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 33038,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7857:71:103"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33040,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "7950:7:103",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 33039,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32868,
                                        "src": "7950:5:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33041,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7950:7:103"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33005,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33003,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33000,
                                  "src": "7636:1:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 33004,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "7640:14:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7636:18:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 33043,
                              "initializationExpression": {
                                "assignments": [
                                  33000
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 33000,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 33043,
                                    "src": "7623:7:103",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 32999,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7623:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 33002,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33001,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7633:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "7623:11:103"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33007,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "7656:3:103",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 33006,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33000,
                                    "src": "7656:1:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 33008,
                                "nodeType": "ExpressionStatement",
                                "src": "7656:3:103"
                              },
                              "nodeType": "ForStatement",
                              "src": "7618:358:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33051,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33048,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32853,
                      "src": "8036:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33049,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "8049:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33050,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8049:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "8036:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33124,
                  "nodeType": "IfStatement",
                  "src": "8032:895:103",
                  "trueBody": {
                    "id": 33123,
                    "nodeType": "Block",
                    "src": "8063:864:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33052,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32847,
                              "src": "8081:5:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                "typeString": "struct PAMTerms calldata"
                              }
                            },
                            "id": 33053,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfRateReset",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22957,
                            "src": "8081:32:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 33054,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8117:1:103",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8081:37:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33122,
                        "nodeType": "IfStatement",
                        "src": "8077:807:103",
                        "trueBody": {
                          "id": 33121,
                          "nodeType": "Block",
                          "src": "8120:764:103",
                          "statements": [
                            {
                              "assignments": [
                                33061
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33061,
                                  "mutability": "mutable",
                                  "name": "rateResetSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33121,
                                  "src": "8138:48:103",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 33059,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8138:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33060,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 33058,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "8146:14:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "8138:23:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33075,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33063,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "8239:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33064,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfRateReset",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22957,
                                    "src": "8239:32:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33065,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "8293:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33066,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maturityDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22949,
                                    "src": "8293:18:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33067,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "8333:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33068,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfRateReset",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 23001,
                                    "src": "8333:22:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33069,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "8377:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33070,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "8377:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "66616c7365",
                                    "id": 33071,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8425:5:103",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33072,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32849,
                                    "src": "8452:12:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33073,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32851,
                                    "src": "8486:10:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33062,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "8189:28:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 33074,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8189:325:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8138:376:103"
                            },
                            {
                              "body": {
                                "id": 33119,
                                "nodeType": "Block",
                                "src": "8575:295:103",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 33090,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 33086,
                                          "name": "rateResetSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33061,
                                          "src": "8601:17:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 33088,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 33087,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33077,
                                          "src": "8619:1:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "8601:20:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 33089,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8625:1:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "8601:25:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 33092,
                                    "nodeType": "IfStatement",
                                    "src": "8597:36:103",
                                    "trueBody": {
                                      "id": 33091,
                                      "nodeType": "Break",
                                      "src": "8628:5:103"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 33101,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 33094,
                                              "name": "rateResetSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33061,
                                              "src": "8671:17:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 33096,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 33095,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33077,
                                              "src": "8689:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8671:20:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 33097,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32849,
                                            "src": "8693:12:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 33098,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32851,
                                            "src": "8707:10:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 33093,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "8659:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 33099,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8659:59:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 33100,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8722:5:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "8659:68:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 33103,
                                    "nodeType": "IfStatement",
                                    "src": "8655:82:103",
                                    "trueBody": {
                                      "id": 33102,
                                      "nodeType": "Continue",
                                      "src": "8729:8:103"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33114,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 33104,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32865,
                                          "src": "8759:6:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 33106,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 33105,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32868,
                                          "src": "8766:5:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "8759:13:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 33108,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "8787:9:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 33109,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "RR",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "8787:12:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 33110,
                                              "name": "rateResetSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33061,
                                              "src": "8801:17:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 33112,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 33111,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33077,
                                              "src": "8819:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8801:20:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 33107,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "8775:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 33113,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8775:47:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "8759:63:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 33115,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8759:63:103"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33117,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "8844:7:103",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 33116,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32868,
                                        "src": "8844:5:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33118,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8844:7:103"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33082,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33080,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33077,
                                  "src": "8550:1:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 33081,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "8554:14:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8550:18:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 33120,
                              "initializationExpression": {
                                "assignments": [
                                  33077
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 33077,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 33120,
                                    "src": "8537:7:103",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 33076,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8537:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 33079,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33078,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8547:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "8537:11:103"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33084,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "8570:3:103",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 33083,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33077,
                                    "src": "8570:1:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 33085,
                                "nodeType": "ExpressionStatement",
                                "src": "8570:3:103"
                              },
                              "nodeType": "ForStatement",
                              "src": "8532:338:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33125,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32853,
                      "src": "8957:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33126,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "8970:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33127,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "FP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8970:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "8957:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33201,
                  "nodeType": "IfStatement",
                  "src": "8953:819:103",
                  "trueBody": {
                    "id": 33200,
                    "nodeType": "Block",
                    "src": "8984:788:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33129,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32847,
                              "src": "9002:5:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                "typeString": "struct PAMTerms calldata"
                              }
                            },
                            "id": 33130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfFee",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22961,
                            "src": "9002:26:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 33131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9032:1:103",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9002:31:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33199,
                        "nodeType": "IfStatement",
                        "src": "8998:764:103",
                        "trueBody": {
                          "id": 33198,
                          "nodeType": "Block",
                          "src": "9035:727:103",
                          "statements": [
                            {
                              "assignments": [
                                33138
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33138,
                                  "mutability": "mutable",
                                  "name": "feeSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33198,
                                  "src": "9053:42:103",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 33136,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9053:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33137,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 33135,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "9061:14:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "9053:23:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33152,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33140,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "9148:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33141,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22961,
                                    "src": "9148:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33142,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "9196:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33143,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maturityDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22949,
                                    "src": "9196:18:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33144,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "9236:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33145,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 23005,
                                    "src": "9236:16:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33146,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "9274:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33147,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "9274:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 33148,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9322:4:103",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33149,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32849,
                                    "src": "9348:12:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33150,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32851,
                                    "src": "9382:10:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33139,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "9098:28:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 33151,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9098:312:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9053:357:103"
                            },
                            {
                              "body": {
                                "id": 33196,
                                "nodeType": "Block",
                                "src": "9471:277:103",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 33167,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 33163,
                                          "name": "feeSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33138,
                                          "src": "9497:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 33165,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 33164,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33154,
                                          "src": "9509:1:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "9497:14:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 33166,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9515:1:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "9497:19:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 33169,
                                    "nodeType": "IfStatement",
                                    "src": "9493:30:103",
                                    "trueBody": {
                                      "id": 33168,
                                      "nodeType": "Break",
                                      "src": "9518:5:103"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 33178,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 33171,
                                              "name": "feeSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33138,
                                              "src": "9561:11:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 33173,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 33172,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33154,
                                              "src": "9573:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "9561:14:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 33174,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32849,
                                            "src": "9577:12:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 33175,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32851,
                                            "src": "9591:10:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 33170,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "9549:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 33176,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9549:53:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 33177,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9606:5:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "9549:62:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 33180,
                                    "nodeType": "IfStatement",
                                    "src": "9545:76:103",
                                    "trueBody": {
                                      "id": 33179,
                                      "nodeType": "Continue",
                                      "src": "9613:8:103"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33191,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 33181,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32865,
                                          "src": "9643:6:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 33183,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 33182,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32868,
                                          "src": "9650:5:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "9643:13:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 33185,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "9671:9:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 33186,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "FP",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "9671:12:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 33187,
                                              "name": "feeSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33138,
                                              "src": "9685:11:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 33189,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 33188,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33154,
                                              "src": "9697:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "9685:14:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 33184,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "9659:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 33190,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9659:41:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "9643:57:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 33192,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9643:57:103"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33194,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "9722:7:103",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 33193,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32868,
                                        "src": "9722:5:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33195,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9722:7:103"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33159,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33157,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33154,
                                  "src": "9446:1:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 33158,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "9450:14:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9446:18:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 33197,
                              "initializationExpression": {
                                "assignments": [
                                  33154
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 33154,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 33197,
                                    "src": "9433:7:103",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 33153,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9433:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 33156,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33155,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9443:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "9433:11:103"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33161,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "9466:3:103",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 33160,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33154,
                                    "src": "9466:1:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 33162,
                                "nodeType": "ExpressionStatement",
                                "src": "9466:3:103"
                              },
                              "nodeType": "ForStatement",
                              "src": "9428:320:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33205,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33202,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32853,
                      "src": "9805:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33203,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "9818:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33204,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "SC",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9818:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "9805:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33285,
                  "nodeType": "IfStatement",
                  "src": "9801:909:103",
                  "trueBody": {
                    "id": 33284,
                    "nodeType": "Block",
                    "src": "9832:878:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 33216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                                  "typeString": "enum ScalingEffect"
                                },
                                "id": 33210,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33206,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32847,
                                    "src": "9851:5:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                      "typeString": "struct PAMTerms calldata"
                                    }
                                  },
                                  "id": 33207,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "scalingEffect",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22931,
                                  "src": "9851:19:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                                    "typeString": "enum ScalingEffect"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33208,
                                    "name": "ScalingEffect",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22623,
                                    "src": "9874:13:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ScalingEffect_$22623_$",
                                      "typeString": "type(enum ScalingEffect)"
                                    }
                                  },
                                  "id": 33209,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "_000",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9874:18:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                                    "typeString": "enum ScalingEffect"
                                  }
                                },
                                "src": "9851:41:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 33211,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "9850:43:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 33215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33212,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32847,
                                "src": "9897:5:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                  "typeString": "struct PAMTerms calldata"
                                }
                              },
                              "id": 33213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cycleAnchorDateOfScalingIndex",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22959,
                              "src": "9897:35:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 33214,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9936:1:103",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "9897:40:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9850:87:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33283,
                        "nodeType": "IfStatement",
                        "src": "9846:854:103",
                        "trueBody": {
                          "id": 33282,
                          "nodeType": "Block",
                          "src": "9939:761:103",
                          "statements": [
                            {
                              "assignments": [
                                33222
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33222,
                                  "mutability": "mutable",
                                  "name": "scalingSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33282,
                                  "src": "9957:46:103",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 33220,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9957:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33221,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 33219,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "9965:14:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "9957:23:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33236,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33224,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "10056:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33225,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfScalingIndex",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22959,
                                    "src": "10056:35:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33226,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "10113:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33227,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maturityDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22949,
                                    "src": "10113:18:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33228,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "10153:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33229,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfScalingIndex",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 23003,
                                    "src": "10153:25:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33230,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32847,
                                      "src": "10200:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33231,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "10200:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 33232,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10248:4:103",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33233,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32849,
                                    "src": "10274:12:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33234,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32851,
                                    "src": "10308:10:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33223,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "10006:28:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 33235,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10006:330:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9957:379:103"
                            },
                            {
                              "body": {
                                "id": 33280,
                                "nodeType": "Block",
                                "src": "10397:289:103",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 33251,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 33247,
                                          "name": "scalingSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33222,
                                          "src": "10423:15:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 33249,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 33248,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33238,
                                          "src": "10439:1:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "10423:18:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 33250,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10445:1:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "10423:23:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 33253,
                                    "nodeType": "IfStatement",
                                    "src": "10419:34:103",
                                    "trueBody": {
                                      "id": 33252,
                                      "nodeType": "Break",
                                      "src": "10448:5:103"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 33262,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 33255,
                                              "name": "scalingSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33222,
                                              "src": "10491:15:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 33257,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 33256,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33238,
                                              "src": "10507:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "10491:18:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 33258,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32849,
                                            "src": "10511:12:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 33259,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32851,
                                            "src": "10525:10:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 33254,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "10479:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 33260,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10479:57:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 33261,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10540:5:103",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "10479:66:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 33264,
                                    "nodeType": "IfStatement",
                                    "src": "10475:80:103",
                                    "trueBody": {
                                      "id": 33263,
                                      "nodeType": "Continue",
                                      "src": "10547:8:103"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33275,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 33265,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32865,
                                          "src": "10577:6:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 33267,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 33266,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32868,
                                          "src": "10584:5:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "10577:13:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 33269,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "10605:9:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 33270,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "SC",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "10605:12:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 33271,
                                              "name": "scalingSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33222,
                                              "src": "10619:15:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 33273,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 33272,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33238,
                                              "src": "10635:1:103",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "10619:18:103",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 33268,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "10593:11:103",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 33274,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10593:45:103",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "10577:61:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 33276,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10577:61:103"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33278,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "10660:7:103",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 33277,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32868,
                                        "src": "10660:5:103",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33279,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10660:7:103"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33241,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33238,
                                  "src": "10372:1:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 33242,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "10376:14:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10372:18:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 33281,
                              "initializationExpression": {
                                "assignments": [
                                  33238
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 33238,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 33281,
                                    "src": "10359:7:103",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 33237,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10359:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 33240,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33239,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10369:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "10359:11:103"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33245,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "10392:3:103",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 33244,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33238,
                                    "src": "10392:1:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 33246,
                                "nodeType": "ExpressionStatement",
                                "src": "10392:3:103"
                              },
                              "nodeType": "ForStatement",
                              "src": "10354:332:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    33290
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33290,
                      "mutability": "mutable",
                      "name": "schedule",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 33319,
                      "src": "10771:25:103",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 33288,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10771:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 33289,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "10771:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 33296,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 33294,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32868,
                        "src": "10813:5:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 33293,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "10799:13:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 33291,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10803:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 33292,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "10803:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 33295,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10799:20:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10771:48:103"
                },
                {
                  "body": {
                    "id": 33315,
                    "nodeType": "Block",
                    "src": "10865:48:103",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 33313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 33307,
                              "name": "schedule",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33290,
                              "src": "10879:8:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 33309,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 33308,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33298,
                              "src": "10888:1:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10879:11:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 33310,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32865,
                              "src": "10893:6:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 33312,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 33311,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33298,
                              "src": "10900:1:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10893:9:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "10879:23:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 33314,
                        "nodeType": "ExpressionStatement",
                        "src": "10879:23:103"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33301,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33298,
                      "src": "10849:1:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 33302,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32868,
                      "src": "10853:5:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10849:9:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33316,
                  "initializationExpression": {
                    "assignments": [
                      33298
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 33298,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 33316,
                        "src": "10834:9:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33297,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10834:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 33300,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 33299,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10846:1:103",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "10834:13:103"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 33305,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "10860:3:103",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 33304,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33298,
                        "src": "10860:1:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 33306,
                    "nodeType": "ExpressionStatement",
                    "src": "10860:3:103"
                  },
                  "nodeType": "ForStatement",
                  "src": "10829:84:103"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 33317,
                    "name": "schedule",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33290,
                    "src": "10930:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 32859,
                  "id": 33318,
                  "nodeType": "Return",
                  "src": "10923:15:103"
                }
              ]
            },
            "documentation": {
              "id": 32845,
              "nodeType": "StructuredDocumentation",
              "src": "5023:395:103",
              "text": " @notice Computes a schedule segment of cyclic contract events based on the contract terms\n and the specified timestamps.\n @param terms terms of the contract\n @param segmentStart start timestamp of the segment\n @param segmentEnd end timestamp of the segement\n @param eventType eventType of the cyclic schedule\n @return event schedule segment"
            },
            "functionSelector": "931172d1",
            "id": 33320,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeCyclicScheduleSegment",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 32855,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5625:8:103"
            },
            "parameters": {
              "id": 32854,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32847,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33320,
                  "src": "5470:23:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32846,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "5470:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32849,
                  "mutability": "mutable",
                  "name": "segmentStart",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33320,
                  "src": "5503:20:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 32848,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5503:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32851,
                  "mutability": "mutable",
                  "name": "segmentEnd",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33320,
                  "src": "5533:18:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 32850,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5533:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32853,
                  "mutability": "mutable",
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33320,
                  "src": "5561:19:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_EventType_$22610",
                    "typeString": "enum EventType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 32852,
                    "name": "EventType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22610,
                    "src": "5561:9:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5460:126:103"
            },
            "returnParameters": {
              "id": 32859,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32858,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33320,
                  "src": "5650:16:103",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 32856,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "5650:7:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 32857,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5650:9:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5649:18:103"
            },
            "scope": 33930,
            "src": "5423:5522:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32501
            ],
            "body": {
              "id": 33572,
              "nodeType": "Block",
              "src": "11511:3392:103",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33336,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33333,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33327,
                      "src": "11640:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33334,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "11653:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33335,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11653:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "11640:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33387,
                  "nodeType": "IfStatement",
                  "src": "11636:707:103",
                  "trueBody": {
                    "id": 33386,
                    "nodeType": "Block",
                    "src": "11667:676:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 33346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 33341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33337,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33323,
                                  "src": "11685:5:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                    "typeString": "struct PAMTerms calldata"
                                  }
                                },
                                "id": 33338,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "cycleOfInterestPayment",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22999,
                                "src": "11685:28:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                  "typeString": "struct IPS calldata"
                                }
                              },
                              "id": 33339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isSet",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22485,
                              "src": "11685:34:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 33340,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11723:4:103",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            "src": "11685:42:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 33345,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33342,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33323,
                                "src": "11731:5:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                  "typeString": "struct PAMTerms calldata"
                                }
                              },
                              "id": 33343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cycleAnchorDateOfInterestPayment",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22955,
                              "src": "11731:38:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 33344,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11773:1:103",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "11731:43:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "11685:89:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33385,
                        "nodeType": "IfStatement",
                        "src": "11681:652:103",
                        "trueBody": {
                          "id": 33384,
                          "nodeType": "Block",
                          "src": "11776:557:103",
                          "statements": [
                            {
                              "assignments": [
                                33348
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33348,
                                  "mutability": "mutable",
                                  "name": "nextInterestPaymentDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33384,
                                  "src": "11794:31:103",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 33347,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11794:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33358,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33350,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "11887:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33351,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22999,
                                    "src": "11887:28:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33352,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "11937:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33353,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "11937:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33354,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "11985:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33355,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22955,
                                    "src": "11985:38:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33356,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33325,
                                    "src": "12045:16:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33349,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "11828:37:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 33357,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11828:251:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11794:285:103"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33361,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33359,
                                  "name": "nextInterestPaymentDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33348,
                                  "src": "12101:23:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33360,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12128:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "12101:28:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 33367,
                              "nodeType": "IfStatement",
                              "src": "12097:51:103",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 33364,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12146:1:103",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 33363,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12138:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 33362,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12138:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 33365,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12138:10:103",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 33332,
                                "id": 33366,
                                "nodeType": "Return",
                                "src": "12131:17:103"
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33371,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33368,
                                  "name": "nextInterestPaymentDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33348,
                                  "src": "12170:23:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33369,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33323,
                                    "src": "12197:5:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                      "typeString": "struct PAMTerms calldata"
                                    }
                                  },
                                  "id": 33370,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "capitalizationEndDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22953,
                                  "src": "12197:27:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12170:54:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 33377,
                              "nodeType": "IfStatement",
                              "src": "12166:77:103",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 33374,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12241:1:103",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 33373,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12233:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 33372,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12233:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 33375,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12233:10:103",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 33332,
                                "id": 33376,
                                "nodeType": "Return",
                                "src": "12226:17:103"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33379,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "12280:9:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 33380,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "IP",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12280:12:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33381,
                                    "name": "nextInterestPaymentDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33348,
                                    "src": "12294:23:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33378,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "12268:11:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 33382,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12268:50:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 33332,
                              "id": 33383,
                              "nodeType": "Return",
                              "src": "12261:57:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33388,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33327,
                      "src": "12373:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33389,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "12386:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33390,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IPCI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "12386:14:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "12373:27:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33442,
                  "nodeType": "IfStatement",
                  "src": "12369:776:103",
                  "trueBody": {
                    "id": 33441,
                    "nodeType": "Block",
                    "src": "12402:743:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 33400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 33395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33392,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33323,
                                "src": "12420:5:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                  "typeString": "struct PAMTerms calldata"
                                }
                              },
                              "id": 33393,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cycleAnchorDateOfInterestPayment",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22955,
                              "src": "12420:38:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 33394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12462:1:103",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "12420:43:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 33399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33396,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33323,
                                "src": "12467:5:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                  "typeString": "struct PAMTerms calldata"
                                }
                              },
                              "id": 33397,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "capitalizationEndDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22953,
                              "src": "12467:27:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 33398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12498:1:103",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "12467:32:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "12420:79:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33440,
                        "nodeType": "IfStatement",
                        "src": "12416:719:103",
                        "trueBody": {
                          "id": 33439,
                          "nodeType": "Block",
                          "src": "12501:634:103",
                          "statements": [
                            {
                              "assignments": [
                                33402
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33402,
                                  "mutability": "mutable",
                                  "name": "cycleOfInterestCapitalization",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33439,
                                  "src": "12519:40:103",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                    "typeString": "struct IPS"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 33401,
                                    "name": "IPS",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 22486,
                                    "src": "12519:3:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_storage_ptr",
                                      "typeString": "struct IPS"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33405,
                              "initialValue": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33403,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33323,
                                  "src": "12562:5:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                    "typeString": "struct PAMTerms calldata"
                                  }
                                },
                                "id": 33404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "cycleOfInterestPayment",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22999,
                                "src": "12562:28:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                  "typeString": "struct IPS calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12519:71:103"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33411,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33406,
                                    "name": "cycleOfInterestCapitalization",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33402,
                                    "src": "12608:29:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    }
                                  },
                                  "id": 33408,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "s",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22483,
                                  "src": "12608:31:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_S_$22477",
                                    "typeString": "enum S"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33409,
                                    "name": "S",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22477,
                                    "src": "12642:1:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_S_$22477_$",
                                      "typeString": "type(enum S)"
                                    }
                                  },
                                  "id": 33410,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "SHORT",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12642:7:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_S_$22477",
                                    "typeString": "enum S"
                                  }
                                },
                                "src": "12608:41:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_S_$22477",
                                  "typeString": "enum S"
                                }
                              },
                              "id": 33412,
                              "nodeType": "ExpressionStatement",
                              "src": "12608:41:103"
                            },
                            {
                              "assignments": [
                                33414
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33414,
                                  "mutability": "mutable",
                                  "name": "nextInterestCapitalizationDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33439,
                                  "src": "12667:38:103",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 33413,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12667:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33423,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 33416,
                                    "name": "cycleOfInterestCapitalization",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33402,
                                    "src": "12767:29:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33417,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "12818:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33418,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "12818:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33419,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "12866:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33420,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22955,
                                    "src": "12866:38:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33421,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33325,
                                    "src": "12926:16:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33415,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "12708:37:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 33422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12708:252:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12667:293:103"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33426,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33424,
                                  "name": "nextInterestCapitalizationDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33414,
                                  "src": "12982:30:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33425,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13016:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "12982:35:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 33432,
                              "nodeType": "IfStatement",
                              "src": "12978:58:103",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 33429,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13034:1:103",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 33428,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13026:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 33427,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13026:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 33430,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13026:10:103",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 33332,
                                "id": 33431,
                                "nodeType": "Return",
                                "src": "13019:17:103"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33434,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "13073:9:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 33435,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "IPCI",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13073:14:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33436,
                                    "name": "nextInterestCapitalizationDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33414,
                                    "src": "13089:30:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33433,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "13061:11:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 33437,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13061:59:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 33332,
                              "id": 33438,
                              "nodeType": "Return",
                              "src": "13054:66:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33446,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33443,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33327,
                      "src": "13181:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33444,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "13194:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33445,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13194:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "13181:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33481,
                  "nodeType": "IfStatement",
                  "src": "13177:563:103",
                  "trueBody": {
                    "id": 33480,
                    "nodeType": "Block",
                    "src": "13208:532:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33447,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33323,
                              "src": "13226:5:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                "typeString": "struct PAMTerms calldata"
                              }
                            },
                            "id": 33448,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfRateReset",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22957,
                            "src": "13226:32:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 33449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13262:1:103",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13226:37:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33479,
                        "nodeType": "IfStatement",
                        "src": "13222:475:103",
                        "trueBody": {
                          "id": 33478,
                          "nodeType": "Block",
                          "src": "13265:432:103",
                          "statements": [
                            {
                              "assignments": [
                                33452
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33452,
                                  "mutability": "mutable",
                                  "name": "nextRateResetDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33478,
                                  "src": "13283:25:103",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 33451,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13283:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33462,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33454,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "13370:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33455,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfRateReset",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 23001,
                                    "src": "13370:22:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33456,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "13414:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33457,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "13414:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33458,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "13462:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33459,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfRateReset",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22957,
                                    "src": "13462:32:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33460,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33325,
                                    "src": "13516:16:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33453,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "13311:37:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 33461,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13311:239:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13283:267:103"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33465,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33463,
                                  "name": "nextRateResetDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33452,
                                  "src": "13572:17:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33464,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13593:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13572:22:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 33471,
                              "nodeType": "IfStatement",
                              "src": "13568:45:103",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 33468,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13611:1:103",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 33467,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13603:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 33466,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13603:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 33469,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13603:10:103",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 33332,
                                "id": 33470,
                                "nodeType": "Return",
                                "src": "13596:17:103"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33473,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "13650:9:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 33474,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "RR",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13650:12:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33475,
                                    "name": "nextRateResetDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33452,
                                    "src": "13664:17:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33472,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "13638:11:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 33476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13638:44:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 33332,
                              "id": 33477,
                              "nodeType": "Return",
                              "src": "13631:51:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33485,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33482,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33327,
                      "src": "13770:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33483,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "13783:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33484,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "FP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13783:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "13770:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33520,
                  "nodeType": "IfStatement",
                  "src": "13766:494:103",
                  "trueBody": {
                    "id": 33519,
                    "nodeType": "Block",
                    "src": "13797:463:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33486,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33323,
                              "src": "13815:5:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                "typeString": "struct PAMTerms calldata"
                              }
                            },
                            "id": 33487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfFee",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22961,
                            "src": "13815:26:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 33488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13845:1:103",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13815:31:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33518,
                        "nodeType": "IfStatement",
                        "src": "13811:439:103",
                        "trueBody": {
                          "id": 33517,
                          "nodeType": "Block",
                          "src": "13848:402:103",
                          "statements": [
                            {
                              "assignments": [
                                33491
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33491,
                                  "mutability": "mutable",
                                  "name": "nextFeeDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33517,
                                  "src": "13866:19:103",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 33490,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13866:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33501,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33493,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "13947:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33494,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 23005,
                                    "src": "13947:16:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33495,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "13985:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33496,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "13985:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33497,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "14033:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33498,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22961,
                                    "src": "14033:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33499,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33325,
                                    "src": "14081:16:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33492,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "13888:37:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 33500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13888:227:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13866:249:103"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33504,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33502,
                                  "name": "nextFeeDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33491,
                                  "src": "14137:11:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33503,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14152:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "14137:16:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 33510,
                              "nodeType": "IfStatement",
                              "src": "14133:39:103",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 33507,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14170:1:103",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 33506,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14162:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 33505,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14162:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 33508,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14162:10:103",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 33332,
                                "id": 33509,
                                "nodeType": "Return",
                                "src": "14155:17:103"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33512,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "14209:9:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 33513,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "FP",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "14209:12:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33514,
                                    "name": "nextFeeDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33491,
                                    "src": "14223:11:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33511,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "14197:11:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 33515,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14197:38:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 33332,
                              "id": 33516,
                              "nodeType": "Return",
                              "src": "14190:45:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33521,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33327,
                      "src": "14293:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33522,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "14306:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33523,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "SC",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "14306:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "14293:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33566,
                  "nodeType": "IfStatement",
                  "src": "14289:580:103",
                  "trueBody": {
                    "id": 33565,
                    "nodeType": "Block",
                    "src": "14320:549:103",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 33535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                                  "typeString": "enum ScalingEffect"
                                },
                                "id": 33529,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33525,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33323,
                                    "src": "14339:5:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                      "typeString": "struct PAMTerms calldata"
                                    }
                                  },
                                  "id": 33526,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "scalingEffect",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22931,
                                  "src": "14339:19:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                                    "typeString": "enum ScalingEffect"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33527,
                                    "name": "ScalingEffect",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22623,
                                    "src": "14362:13:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ScalingEffect_$22623_$",
                                      "typeString": "type(enum ScalingEffect)"
                                    }
                                  },
                                  "id": 33528,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "_000",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "14362:18:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                                    "typeString": "enum ScalingEffect"
                                  }
                                },
                                "src": "14339:41:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 33530,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "14338:43:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 33534,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33531,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33323,
                                "src": "14385:5:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                  "typeString": "struct PAMTerms calldata"
                                }
                              },
                              "id": 33532,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cycleAnchorDateOfScalingIndex",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22959,
                              "src": "14385:35:103",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 33533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14424:1:103",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "14385:40:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "14338:87:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33564,
                        "nodeType": "IfStatement",
                        "src": "14334:525:103",
                        "trueBody": {
                          "id": 33563,
                          "nodeType": "Block",
                          "src": "14427:432:103",
                          "statements": [
                            {
                              "assignments": [
                                33537
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33537,
                                  "mutability": "mutable",
                                  "name": "nextScalingDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 33563,
                                  "src": "14445:23:103",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 33536,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14445:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33547,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33539,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "14530:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33540,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfScalingIndex",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 23003,
                                    "src": "14530:25:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33541,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "14577:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33542,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22929,
                                    "src": "14577:26:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33543,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33323,
                                      "src": "14625:5:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                                        "typeString": "struct PAMTerms calldata"
                                      }
                                    },
                                    "id": 33544,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfScalingIndex",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22959,
                                    "src": "14625:35:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33545,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33325,
                                    "src": "14682:16:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33538,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "14471:37:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 33546,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14471:245:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14445:271:103"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33550,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33548,
                                  "name": "nextScalingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33537,
                                  "src": "14738:15:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33549,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14757:1:103",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "14738:20:103",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 33556,
                              "nodeType": "IfStatement",
                              "src": "14734:43:103",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 33553,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14775:1:103",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 33552,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14767:7:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 33551,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14767:7:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 33554,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14767:10:103",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 33332,
                                "id": 33555,
                                "nodeType": "Return",
                                "src": "14760:17:103"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33558,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "14814:9:103",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 33559,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "SC",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "14814:12:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33560,
                                    "name": "nextScalingDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33537,
                                    "src": "14828:15:103",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33557,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "14802:11:103",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 33561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14802:42:103",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 33332,
                              "id": 33562,
                              "nodeType": "Return",
                              "src": "14795:49:103"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 33569,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14894:1:103",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 33568,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "14886:7:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": {
                        "id": 33567,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "14886:7:103",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 33570,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14886:10:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 33332,
                  "id": 33571,
                  "nodeType": "Return",
                  "src": "14879:17:103"
                }
              ]
            },
            "documentation": {
              "id": 33321,
              "nodeType": "StructuredDocumentation",
              "src": "10951:345:103",
              "text": " @notice Computes a schedule segment of cyclic contract events based on the contract terms\n and the specified timestamps.\n @param terms terms of the contract\n @param lastScheduleTime last occurrence of cyclic event\n @param eventType eventType of the cyclic schedule\n @return event schedule segment"
            },
            "functionSelector": "dd37acde",
            "id": 33573,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeNextCyclicEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 33329,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11473:8:103"
            },
            "parameters": {
              "id": 33328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33323,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33573,
                  "src": "11342:23:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33322,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "11342:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33325,
                  "mutability": "mutable",
                  "name": "lastScheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33573,
                  "src": "11375:24:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33324,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11375:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33327,
                  "mutability": "mutable",
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33573,
                  "src": "11409:19:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_EventType_$22610",
                    "typeString": "enum EventType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33326,
                    "name": "EventType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22610,
                    "src": "11409:9:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11332:102:103"
            },
            "returnParameters": {
              "id": 33332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33331,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33573,
                  "src": "11498:7:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 33330,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11498:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11497:9:103"
            },
            "scope": 33930,
            "src": "11301:3602:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32532
            ],
            "body": {
              "id": 33592,
              "nodeType": "Block",
              "src": "15791:28:103",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 33590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "15808:4:103",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 33589,
                  "id": 33591,
                  "nodeType": "Return",
                  "src": "15801:11:103"
                }
              ]
            },
            "documentation": {
              "id": 33574,
              "nodeType": "StructuredDocumentation",
              "src": "14909:586:103",
              "text": " @notice Verifies that the provided event is still scheduled under the terms, the current state of the\n contract and the current state of the underlying.\n param _event event for which to check if its still scheduled\n param terms terms of the contract\n param state current state of the contract\n param hasUnderlying boolean indicating whether the contract has an underlying contract\n param underlyingState state of the underlying (empty state object if non-existing)\n @return boolean indicating whether event is still scheduled"
            },
            "functionSelector": "dceda254",
            "id": 33593,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isEventScheduled",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 33586,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "15755:8:103"
            },
            "parameters": {
              "id": 33585,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33576,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33593,
                  "src": "15535:7:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 33575,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15535:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33578,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33593,
                  "src": "15565:17:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33577,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "15565:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33580,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33593,
                  "src": "15604:14:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33579,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "15604:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33582,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33593,
                  "src": "15640:4:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 33581,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15640:4:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33584,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33593,
                  "src": "15674:14:103",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33583,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "15674:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15525:191:103"
            },
            "returnParameters": {
              "id": 33589,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33588,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33593,
                  "src": "15781:4:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 33587,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15781:4:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15780:6:103"
            },
            "scope": 33930,
            "src": "15500:319:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 33775,
              "nodeType": "Block",
              "src": "16696:1556:103",
              "statements": [
                {
                  "assignments": [
                    33608,
                    33610
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33608,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 33775,
                      "src": "16707:19:103",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 33607,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "16707:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 33610,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 33775,
                      "src": "16728:20:103",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33609,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16728:7:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 33614,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 33612,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33600,
                        "src": "16764:6:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 33611,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "16752:11:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 33613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16752:19:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16706:65:103"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33618,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33615,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "16875:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33616,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16888:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33617,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "AD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16888:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16875:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33626,
                  "nodeType": "IfStatement",
                  "src": "16871:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33620,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "16920:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33621,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "16927:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33622,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "16934:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33623,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "16948:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33619,
                        "name": "STF_PAM_AD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34446,
                        "src": "16909:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33624,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16909:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33625,
                    "nodeType": "Return",
                    "src": "16902:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33627,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "16975:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33628,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16988:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "FP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16988:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16975:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33638,
                  "nodeType": "IfStatement",
                  "src": "16971:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33632,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17020:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33633,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17027:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33634,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17034:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33635,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17048:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33631,
                        "name": "STF_PAM_FP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34525,
                        "src": "17009:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33636,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17009:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33637,
                    "nodeType": "Return",
                    "src": "17002:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33639,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17075:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33640,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17088:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33641,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17088:13:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17075:26:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33650,
                  "nodeType": "IfStatement",
                  "src": "17071:92:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33644,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17122:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33645,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17129:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33646,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17136:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33647,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17150:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33643,
                        "name": "STF_PAM_IED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34574,
                        "src": "17110:11:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33648,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17110:53:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33649,
                    "nodeType": "Return",
                    "src": "17103:60:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33654,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33651,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17177:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33652,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17190:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33653,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IPCI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17190:14:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17177:27:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33662,
                  "nodeType": "IfStatement",
                  "src": "17173:94:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33656,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17226:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33657,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17233:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33658,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17240:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33659,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17254:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33655,
                        "name": "STF_PAM_IPCI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34675,
                        "src": "17213:12:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33660,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17213:54:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33661,
                    "nodeType": "Return",
                    "src": "17206:61:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33663,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17281:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33664,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17294:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33665,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17294:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17281:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33674,
                  "nodeType": "IfStatement",
                  "src": "17277:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33668,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17326:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33669,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17333:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33670,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17340:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33671,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17354:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33667,
                        "name": "STF_PAM_IP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34754,
                        "src": "17315:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33672,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17315:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33673,
                    "nodeType": "Return",
                    "src": "17308:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33678,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33675,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17381:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33676,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17394:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33677,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17394:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17381:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33686,
                  "nodeType": "IfStatement",
                  "src": "17377:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33680,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17426:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33681,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17433:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33682,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17440:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33683,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17454:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33679,
                        "name": "STF_PAM_PP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34845,
                        "src": "17415:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33684,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17415:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33685,
                    "nodeType": "Return",
                    "src": "17408:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33687,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17481:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33688,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17494:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33689,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "MD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17494:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17481:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33698,
                  "nodeType": "IfStatement",
                  "src": "17477:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33692,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17526:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33693,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17533:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33694,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17540:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33695,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17554:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33691,
                        "name": "STF_PAM_MD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 35505,
                        "src": "17515:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33696,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17515:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33697,
                    "nodeType": "Return",
                    "src": "17508:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33702,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33699,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17581:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33700,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17594:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33701,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PY",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17594:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17581:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33710,
                  "nodeType": "IfStatement",
                  "src": "17577:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33704,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17626:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33705,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17633:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33706,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17640:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33707,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17654:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33703,
                        "name": "STF_PAM_PY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 35033,
                        "src": "17615:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33708,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17615:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33709,
                    "nodeType": "Return",
                    "src": "17608:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33714,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33711,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17681:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33712,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17694:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33713,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RRF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17694:13:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17681:26:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33722,
                  "nodeType": "IfStatement",
                  "src": "17677:92:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33716,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17728:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33717,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17735:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33718,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17742:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33719,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17756:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33715,
                        "name": "STF_PAM_RRF",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 35131,
                        "src": "17716:11:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33720,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17716:53:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33721,
                    "nodeType": "Return",
                    "src": "17709:60:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33723,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17783:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33724,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17796:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33725,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17796:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17783:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33734,
                  "nodeType": "IfStatement",
                  "src": "17779:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33728,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17828:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33729,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17835:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33730,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17842:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33731,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17856:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33727,
                        "name": "STF_PAM_RR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 35268,
                        "src": "17817:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33732,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17817:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33733,
                    "nodeType": "Return",
                    "src": "17810:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33738,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33735,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17883:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33736,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17896:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33737,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "SC",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17896:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17883:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33746,
                  "nodeType": "IfStatement",
                  "src": "17879:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33740,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "17928:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33741,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "17935:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33742,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "17942:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33743,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "17956:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33739,
                        "name": "STF_PAM_SC",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 35401,
                        "src": "17917:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33744,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17917:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33745,
                    "nodeType": "Return",
                    "src": "17910:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33747,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "17983:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33748,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17996:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33749,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "TD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17996:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17983:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33758,
                  "nodeType": "IfStatement",
                  "src": "17979:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33752,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "18028:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33753,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "18035:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33754,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "18042:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33755,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "18056:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33751,
                        "name": "STF_PAM_TD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 35559,
                        "src": "18017:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33756,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18017:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33757,
                    "nodeType": "Return",
                    "src": "18010:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33759,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33608,
                      "src": "18083:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33760,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "18096:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33761,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CE",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18096:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18083:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33770,
                  "nodeType": "IfStatement",
                  "src": "18079:91:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33764,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33596,
                          "src": "18129:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33765,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33598,
                          "src": "18136:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33766,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33610,
                          "src": "18143:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33767,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33602,
                          "src": "18157:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33763,
                        "name": "STF_PAM_CE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 35692,
                        "src": "18118:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 33768,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18118:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 33606,
                    "id": 33769,
                    "nodeType": "Return",
                    "src": "18111:59:103"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "50414d456e67696e652e73746174655472616e736974696f6e46756e6374696f6e3a204154545249425554455f4e4f545f464f554e44",
                        "id": 33772,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18188:56:103",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_921bf018c382fd194b5583a0deab63a1acbed6362f7a0443f612352e6fb47163",
                          "typeString": "literal_string \"PAMEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND\""
                        },
                        "value": "PAMEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_921bf018c382fd194b5583a0deab63a1acbed6362f7a0443f612352e6fb47163",
                          "typeString": "literal_string \"PAMEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND\""
                        }
                      ],
                      "id": 33771,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "18181:6:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 33773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18181:64:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 33774,
                  "nodeType": "ExpressionStatement",
                  "src": "18181:64:103"
                }
              ]
            },
            "documentation": {
              "id": 33594,
              "nodeType": "StructuredDocumentation",
              "src": "15825:649:103",
              "text": " @notice Implements abstract method which is defined in BaseEngine.\n Applies an event to the current state of the contract and returns the resulting state.\n The inheriting Engine contract has to map the events type to the designated STF.\n todo Annuity calculator for RR/RRF events, IPCB events and ICB state variable\n @param terms terms of the contract\n @param state current state of the contract\n @param _event event for which to evaluate the next state for\n @param externalData external data needed for STF evaluation (e.g. rate for RR events)\n @return the resulting contract state"
            },
            "id": 33776,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "stateTransitionFunction",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 33603,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33596,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33776,
                  "src": "16521:21:103",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33595,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "16521:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33598,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33776,
                  "src": "16552:18:103",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33597,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "16552:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33600,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33776,
                  "src": "16580:14:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 33599,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "16580:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33602,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33776,
                  "src": "16604:20:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 33601,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "16604:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16511:119:103"
            },
            "returnParameters": {
              "id": 33606,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33605,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33776,
                  "src": "16678:12:103",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33604,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "16678:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16677:14:103"
            },
            "scope": 33930,
            "src": "16479:1773:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 33928,
              "nodeType": "Block",
              "src": "19094:1282:103",
              "statements": [
                {
                  "assignments": [
                    33791,
                    33793
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33791,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 33928,
                      "src": "19105:19:103",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 33790,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "19105:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 33793,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 33928,
                      "src": "19126:20:103",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33792,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "19126:7:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 33797,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 33795,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33783,
                        "src": "19162:6:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 33794,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "19150:11:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 33796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19150:19:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19104:65:103"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33801,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33798,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19318:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33799,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19331:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33800,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "AD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19331:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19318:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33804,
                  "nodeType": "IfStatement",
                  "src": "19314:39:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 33802,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19352:1:103",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 33789,
                    "id": 33803,
                    "nodeType": "Return",
                    "src": "19345:8:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33808,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33805,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19367:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33806,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19380:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33807,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IPCI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19380:14:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19367:27:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33811,
                  "nodeType": "IfStatement",
                  "src": "19363:41:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 33809,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19403:1:103",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 33789,
                    "id": 33810,
                    "nodeType": "Return",
                    "src": "19396:8:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33815,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33812,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19418:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33813,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19431:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33814,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RRF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19431:13:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19418:26:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33818,
                  "nodeType": "IfStatement",
                  "src": "19414:40:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 33816,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19453:1:103",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 33789,
                    "id": 33817,
                    "nodeType": "Return",
                    "src": "19446:8:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33822,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33819,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19468:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33820,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19481:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33821,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19481:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19468:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33825,
                  "nodeType": "IfStatement",
                  "src": "19464:39:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 33823,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19502:1:103",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 33789,
                    "id": 33824,
                    "nodeType": "Return",
                    "src": "19495:8:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33829,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33826,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19517:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33827,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19530:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33828,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "SC",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19530:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19517:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33832,
                  "nodeType": "IfStatement",
                  "src": "19513:39:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 33830,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19551:1:103",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 33789,
                    "id": 33831,
                    "nodeType": "Return",
                    "src": "19544:8:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33836,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33833,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19566:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33834,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19579:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33835,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CE",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19579:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19566:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33839,
                  "nodeType": "IfStatement",
                  "src": "19562:39:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 33837,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19600:1:103",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 33789,
                    "id": 33838,
                    "nodeType": "Return",
                    "src": "19593:8:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33843,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33840,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19615:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33841,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19628:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33842,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "FP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19628:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19615:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33851,
                  "nodeType": "IfStatement",
                  "src": "19611:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33845,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33779,
                          "src": "19660:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33846,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33781,
                          "src": "19667:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33847,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33793,
                          "src": "19674:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33848,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33785,
                          "src": "19688:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33844,
                        "name": "POF_PAM_FP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34015,
                        "src": "19649:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 33849,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19649:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 33789,
                    "id": 33850,
                    "nodeType": "Return",
                    "src": "19642:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33855,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33852,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19715:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33853,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19728:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33854,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19728:13:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19715:26:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33863,
                  "nodeType": "IfStatement",
                  "src": "19711:92:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33857,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33779,
                          "src": "19762:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33858,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33781,
                          "src": "19769:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33859,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33793,
                          "src": "19776:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33860,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33785,
                          "src": "19790:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33856,
                        "name": "POF_PAM_IED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34047,
                        "src": "19750:11:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 33861,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19750:53:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 33789,
                    "id": 33862,
                    "nodeType": "Return",
                    "src": "19743:60:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33864,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19817:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33865,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19830:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33866,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19830:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19817:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33875,
                  "nodeType": "IfStatement",
                  "src": "19813:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33869,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33779,
                          "src": "19862:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33870,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33781,
                          "src": "19869:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33871,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33793,
                          "src": "19876:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33872,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33785,
                          "src": "19890:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33868,
                        "name": "POF_PAM_IP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34113,
                        "src": "19851:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 33873,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19851:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 33789,
                    "id": 33874,
                    "nodeType": "Return",
                    "src": "19844:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33876,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "19917:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33877,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19930:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33878,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19930:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19917:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33887,
                  "nodeType": "IfStatement",
                  "src": "19913:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33881,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33779,
                          "src": "19962:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33882,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33781,
                          "src": "19969:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33883,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33793,
                          "src": "19976:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33884,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33785,
                          "src": "19990:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33880,
                        "name": "POF_PAM_PP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34137,
                        "src": "19951:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 33885,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19951:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 33789,
                    "id": 33886,
                    "nodeType": "Return",
                    "src": "19944:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33891,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33888,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "20017:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33889,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "20030:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33890,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "MD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "20030:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "20017:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33899,
                  "nodeType": "IfStatement",
                  "src": "20013:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33893,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33779,
                          "src": "20062:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33894,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33781,
                          "src": "20069:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33895,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33793,
                          "src": "20076:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33896,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33785,
                          "src": "20090:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33892,
                        "name": "POF_PAM_MD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34160,
                        "src": "20051:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 33897,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20051:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 33789,
                    "id": 33898,
                    "nodeType": "Return",
                    "src": "20044:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33903,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33900,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "20117:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33901,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "20130:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33902,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PY",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "20130:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "20117:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33911,
                  "nodeType": "IfStatement",
                  "src": "20113:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33905,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33779,
                          "src": "20162:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33906,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33781,
                          "src": "20169:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33907,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33793,
                          "src": "20176:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33908,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33785,
                          "src": "20190:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33904,
                        "name": "POF_PAM_PY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34259,
                        "src": "20151:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 33909,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20151:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 33789,
                    "id": 33910,
                    "nodeType": "Return",
                    "src": "20144:59:103"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 33915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 33912,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33791,
                      "src": "20217:9:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33913,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "20230:9:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 33914,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "TD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "20230:12:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "20217:25:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33923,
                  "nodeType": "IfStatement",
                  "src": "20213:90:103",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33917,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33779,
                          "src": "20262:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33918,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33781,
                          "src": "20269:5:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33919,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33793,
                          "src": "20276:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 33920,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33785,
                          "src": "20290:12:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 33916,
                        "name": "POF_PAM_TD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34330,
                        "src": "20251:10:103",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 33921,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20251:52:103",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 33789,
                    "id": 33922,
                    "nodeType": "Return",
                    "src": "20244:59:103"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "50414d456e67696e652e7061796f666646756e6374696f6e3a204154545249425554455f4e4f545f464f554e44",
                        "id": 33925,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20321:47:103",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_789b02771a5dfc4f60ad8d600a6e6b223c6ba450424f38340ffaac2fa3ee386a",
                          "typeString": "literal_string \"PAMEngine.payoffFunction: ATTRIBUTE_NOT_FOUND\""
                        },
                        "value": "PAMEngine.payoffFunction: ATTRIBUTE_NOT_FOUND"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_789b02771a5dfc4f60ad8d600a6e6b223c6ba450424f38340ffaac2fa3ee386a",
                          "typeString": "literal_string \"PAMEngine.payoffFunction: ATTRIBUTE_NOT_FOUND\""
                        }
                      ],
                      "id": 33924,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "20314:6:103",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 33926,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20314:55:103",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 33927,
                  "nodeType": "ExpressionStatement",
                  "src": "20314:55:103"
                }
              ]
            },
            "documentation": {
              "id": 33777,
              "nodeType": "StructuredDocumentation",
              "src": "18258:629:103",
              "text": " @notice Implements abstract method which is defined in BaseEngine.\n Computes the payoff for an event under the current state of the contract.\n The inheriting Engine contract has to map the events type to the designated POF.\n todo IPCB events and Icb state variable, Icb state variable updates in IP-paying events\n @param terms terms of the contract\n @param state current state of the contract\n @param _event event for which the payoff should be evaluated\n @param externalData external data needed for POF evaluation (e.g. fxRate)\n @return the payoff of the event"
            },
            "id": 33929,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "payoffFunction",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 33786,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33779,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33929,
                  "src": "18925:21:103",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33778,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "18925:8:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33781,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33929,
                  "src": "18956:18:103",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33780,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "18956:5:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33783,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33929,
                  "src": "18984:14:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 33782,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18984:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33785,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33929,
                  "src": "19008:20:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 33784,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "19008:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18915:119:103"
            },
            "returnParameters": {
              "id": 33789,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33788,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33929,
                  "src": "19082:6:103",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 33787,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19082:6:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19081:8:103"
            },
            "scope": 33930,
            "src": "18892:1484:103",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 33931,
        "src": "430:19948:103"
      }
    ],
    "src": "41:20338:103"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {
    "4": {
      "events": {},
      "links": {},
      "address": "0x6800EaE29679008112d836d9E794d5fC784c291e",
      "transactionHash": "0x3a16ae4a2deb215cddbcb8c0c2082e943edd9089ffb1ced9caf10b9ff53cdade"
    },
    "5": {
      "events": {},
      "links": {},
      "address": "0x5366BCe4FaD941acA63640120a47B1c41f8679B1",
      "transactionHash": "0xd86c2dff19651618a6095f0cb606fe6880b1e75a1adb032fdb472918acd034b1"
    },
    "1994": {
      "events": {},
      "links": {},
      "address": "0xC2Be15A598b3F80f781cbd8f3227d5E9559b0899",
      "transactionHash": "0xa8bc53e2c2446a1c1cb9f31ac732c174196005ee099240fd520384c1ee549ce0"
    }
  },
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:18.454Z",
  "devdoc": {
    "details": "All numbers except unix timestamp are represented as multiple of 10 ** 18",
    "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"
        }
      },
      "computeCyclicScheduleSegment((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),uint256,uint256,uint8)": {
        "params": {
          "eventType": "eventType of the cyclic schedule",
          "segmentEnd": "end timestamp of the segement",
          "segmentStart": "start timestamp of the segment",
          "terms": "terms of the contract"
        },
        "returns": {
          "_0": "event schedule segment"
        }
      },
      "computeEventTimeForEvent(bytes32,uint8,uint8,uint256)": {
        "details": "For optimization reasons not located in EventUtil by applying the BDC specified in the terms"
      },
      "computeInitialState((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)))": {
        "params": {
          "terms": "terms of the contract"
        },
        "returns": {
          "_0": "the initial state of the contract"
        }
      },
      "computeNextCyclicEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),uint256,uint8)": {
        "params": {
          "eventType": "eventType of the cyclic schedule",
          "lastScheduleTime": "last occurrence of cyclic event",
          "terms": "terms of the contract"
        },
        "returns": {
          "_0": "event schedule segment"
        }
      },
      "computeNonCyclicScheduleSegment((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),uint256,uint256)": {
        "params": {
          "segmentEnd": "end timestamp of the segement",
          "segmentStart": "start timestamp of the segment",
          "terms": "terms of the contract"
        },
        "returns": {
          "_0": "segment of the non-cyclic schedule"
        }
      },
      "computePayoffForEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32,bytes32)": {
        "params": {
          "_event": "event for which the payoff should be evaluated",
          "externalData": "external data needed for POF evaluation (e.g. fxRate)",
          "state": "current state of the contract",
          "terms": "terms of the contract"
        },
        "returns": {
          "_0": "the payoff of the event"
        }
      },
      "computeStateForEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32,bytes32)": {
        "params": {
          "_event": "event to be applied to the contract state",
          "externalData": "external data needed for STF evaluation (e.g. rate for RR events)",
          "state": "current state of the contract",
          "terms": "terms of the contract"
        },
        "returns": {
          "_0": "the resulting contract state"
        }
      },
      "isEventScheduled(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bool,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "returns": {
          "_0": "boolean indicating whether event is still scheduled"
        }
      }
    },
    "title": "PAMEngine",
    "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."
      },
      "computeCyclicScheduleSegment((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),uint256,uint256,uint8)": {
        "notice": "Computes a schedule segment of cyclic contract events based on the contract terms and the specified timestamps."
      },
      "computeEventTimeForEvent(bytes32,uint8,uint8,uint256)": {
        "notice": "Returns the event time for a given schedule time"
      },
      "computeInitialState((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)))": {
        "notice": "Initialize contract state space based on the contract terms."
      },
      "computeNextCyclicEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),uint256,uint8)": {
        "notice": "Computes a schedule segment of cyclic contract events based on the contract terms and the specified timestamps."
      },
      "computeNonCyclicScheduleSegment((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),uint256,uint256)": {
        "notice": "Computes a schedule segment of non-cyclic contract events based on the contract terms and the specified timestamps."
      },
      "computePayoffForEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32,bytes32)": {
        "notice": "Evaluates the payoff for an event under the current state of the contract."
      },
      "computeStateForEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32,bytes32)": {
        "notice": "Applys an event to the current state of a contract and returns the resulting contract state."
      },
      "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"
      },
      "isEventScheduled(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bool,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "notice": "Verifies that the provided event is still scheduled under the terms, the current state of the contract and the current state of the underlying. param _event event for which to check if its still scheduled param terms terms of the contract param state current state of the contract param hasUnderlying boolean indicating whether the contract has an underlying contract param underlyingState state of the underlying (empty state object if non-existing)"
      },
      "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": "Inherits from BaseEngine by implementing STFs, POFs according to the ACTUS standard for a PAM contract",
    "version": 1
  }
}