{
  "contractName": "CEGRegistry",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        }
      ],
      "name": "GrantedAccess",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "RegisteredAsset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        }
      ],
      "name": "RevokedAccess",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevActor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newActor",
          "type": "address"
        }
      ],
      "name": "UpdatedActor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevBeneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newBeneficiary",
          "type": "address"
        }
      ],
      "name": "UpdatedBeneficiary",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevEngine",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newEngine",
          "type": "address"
        }
      ],
      "name": "UpdatedEngine",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "statusDate",
          "type": "uint256"
        }
      ],
      "name": "UpdatedFinalizedState",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevObligor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newObligor",
          "type": "address"
        }
      ],
      "name": "UpdatedObligor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "statusDate",
          "type": "uint256"
        }
      ],
      "name": "UpdatedState",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "UpdatedTerms",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "actor",
          "type": "address"
        }
      ],
      "name": "approveActor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "approvedActors",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "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": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getActor",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getEngine",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getEnumValueForStateAttribute",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "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": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getEventAtIndex",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getFinalizedState",
      "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": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getIntValueForStateAttribute",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getNextScheduleIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getNextScheduledEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getNextUnderlyingEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getOwnership",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "creatorObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "creatorBeneficiary",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyBeneficiary",
              "type": "address"
            }
          ],
          "internalType": "struct AssetOwnership",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getPendingEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getSchedule",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getScheduleLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getState",
      "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": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getUintValueForStateAttribute",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantAccess",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasAccess",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRootAccess",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "isEventSettled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        },
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "isRegistered",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        },
        {
          "internalType": "int256",
          "name": "_payoff",
          "type": "int256"
        }
      ],
      "name": "markEventAsSettled",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "popNextScheduledEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "popPendingEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "pendingEvent",
          "type": "bytes32"
        }
      ],
      "name": "pushPendingEvent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeAccess",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "actor",
          "type": "address"
        }
      ],
      "name": "setActor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCounterpartyBeneficiary",
          "type": "address"
        }
      ],
      "name": "setCounterpartyBeneficiary",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCounterpartyObligor",
          "type": "address"
        }
      ],
      "name": "setCounterpartyObligor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCreatorBeneficiary",
          "type": "address"
        }
      ],
      "name": "setCreatorBeneficiary",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCreatorObligor",
          "type": "address"
        }
      ],
      "name": "setCreatorObligor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        }
      ],
      "name": "setEngine",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "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"
        }
      ],
      "name": "setFinalizedState",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "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"
        }
      ],
      "name": "setState",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "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 FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractPerformance",
              "name": "creditEventTypeCovered",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "coverageOfCreditEnhancement",
              "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": "cycleOfFee",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "object",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "object2",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum ContractReferenceType",
                  "name": "_type",
                  "type": "uint8"
                },
                {
                  "internalType": "enum ContractReferenceRole",
                  "name": "role",
                  "type": "uint8"
                }
              ],
              "internalType": "struct ContractReference",
              "name": "contractReference_1",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "object",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "object2",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum ContractReferenceType",
                  "name": "_type",
                  "type": "uint8"
                },
                {
                  "internalType": "enum ContractReferenceRole",
                  "name": "role",
                  "type": "uint8"
                }
              ],
              "internalType": "struct ContractReference",
              "name": "contractReference_2",
              "type": "tuple"
            }
          ],
          "internalType": "struct CEGTerms",
          "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": "schedule",
          "type": "bytes32[]"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "creatorObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "creatorBeneficiary",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyBeneficiary",
              "type": "address"
            }
          ],
          "internalType": "struct AssetOwnership",
          "name": "ownership",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "actor",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "registerAsset",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getTerms",
      "outputs": [
        {
          "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 FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractPerformance",
              "name": "creditEventTypeCovered",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "coverageOfCreditEnhancement",
              "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": "cycleOfFee",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "object",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "object2",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum ContractReferenceType",
                  "name": "_type",
                  "type": "uint8"
                },
                {
                  "internalType": "enum ContractReferenceRole",
                  "name": "role",
                  "type": "uint8"
                }
              ],
              "internalType": "struct ContractReference",
              "name": "contractReference_1",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "object",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "object2",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum ContractReferenceType",
                  "name": "_type",
                  "type": "uint8"
                },
                {
                  "internalType": "enum ContractReferenceRole",
                  "name": "role",
                  "type": "uint8"
                }
              ],
              "internalType": "struct ContractReference",
              "name": "contractReference_2",
              "type": "tuple"
            }
          ],
          "internalType": "struct CEGTerms",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "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 FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractPerformance",
              "name": "creditEventTypeCovered",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "coverageOfCreditEnhancement",
              "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": "cycleOfFee",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "object",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "object2",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum ContractReferenceType",
                  "name": "_type",
                  "type": "uint8"
                },
                {
                  "internalType": "enum ContractReferenceRole",
                  "name": "role",
                  "type": "uint8"
                }
              ],
              "internalType": "struct ContractReference",
              "name": "contractReference_1",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "object",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "object2",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum ContractReferenceType",
                  "name": "_type",
                  "type": "uint8"
                },
                {
                  "internalType": "enum ContractReferenceRole",
                  "name": "role",
                  "type": "uint8"
                }
              ],
              "internalType": "struct ContractReference",
              "name": "contractReference_2",
              "type": "tuple"
            }
          ],
          "internalType": "struct CEGTerms",
          "name": "terms",
          "type": "tuple"
        }
      ],
      "name": "setTerms",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getEnumValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getAddressValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getBytes32ValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getUIntValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getIntValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getPeriodValueForTermsAttribute",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "i",
              "type": "uint256"
            },
            {
              "internalType": "enum P",
              "name": "p",
              "type": "uint8"
            },
            {
              "internalType": "bool",
              "name": "isSet",
              "type": "bool"
            }
          ],
          "internalType": "struct IP",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getCycleValueForTermsAttribute",
      "outputs": [
        {
          "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": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getContractReferenceValueForTermsAttribute",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "object",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "object2",
              "type": "bytes32"
            },
            {
              "internalType": "enum ContractReferenceType",
              "name": "_type",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractReferenceRole",
              "name": "role",
              "type": "uint8"
            }
          ],
          "internalType": "struct ContractReference",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"}],\"name\":\"GrantedAccess\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"RegisteredAsset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"}],\"name\":\"RevokedAccess\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevActor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newActor\",\"type\":\"address\"}],\"name\":\"UpdatedActor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevBeneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newBeneficiary\",\"type\":\"address\"}],\"name\":\"UpdatedBeneficiary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevEngine\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newEngine\",\"type\":\"address\"}],\"name\":\"UpdatedEngine\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"}],\"name\":\"UpdatedFinalizedState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevObligor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newObligor\",\"type\":\"address\"}],\"name\":\"UpdatedObligor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"}],\"name\":\"UpdatedState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"UpdatedTerms\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"}],\"name\":\"approveActor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"approvedActors\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"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\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getActor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getAddressValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getBytes32ValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getContractReferenceValueForTermsAttribute\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getCycleValueForTermsAttribute\",\"outputs\":[{\"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\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getEngine\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getEnumValueForStateAttribute\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getEnumValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"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\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getEventAtIndex\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getFinalizedState\",\"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\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getIntValueForStateAttribute\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getIntValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getNextScheduleIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getNextScheduledEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getNextUnderlyingEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getOwnership\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"creatorObligor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"creatorBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyObligor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyBeneficiary\",\"type\":\"address\"}],\"internalType\":\"struct AssetOwnership\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getPendingEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getPeriodValueForTermsAttribute\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getSchedule\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getScheduleLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getState\",\"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\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getTerms\",\"outputs\":[{\"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 FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractPerformance\",\"name\":\"creditEventTypeCovered\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"coverageOfCreditEnhancement\",\"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\":\"cycleOfFee\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"contractReference_1\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"contractReference_2\",\"type\":\"tuple\"}],\"internalType\":\"struct CEGTerms\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getUIntValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getUintValueForStateAttribute\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasAccess\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRootAccess\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"isEventSettled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"},{\"internalType\":\"int256\",\"name\":\"_payoff\",\"type\":\"int256\"}],\"name\":\"markEventAsSettled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"popNextScheduledEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"popPendingEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"pendingEvent\",\"type\":\"bytes32\"}],\"name\":\"pushPendingEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"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 FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractPerformance\",\"name\":\"creditEventTypeCovered\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"coverageOfCreditEnhancement\",\"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\":\"cycleOfFee\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"contractReference_1\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"contractReference_2\",\"type\":\"tuple\"}],\"internalType\":\"struct CEGTerms\",\"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\":\"schedule\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"creatorObligor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"creatorBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyObligor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyBeneficiary\",\"type\":\"address\"}],\"internalType\":\"struct AssetOwnership\",\"name\":\"ownership\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"engine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"registerAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"}],\"name\":\"setActor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newCounterpartyBeneficiary\",\"type\":\"address\"}],\"name\":\"setCounterpartyBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newCounterpartyObligor\",\"type\":\"address\"}],\"name\":\"setCounterpartyObligor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newCreatorBeneficiary\",\"type\":\"address\"}],\"name\":\"setCreatorBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newCreatorObligor\",\"type\":\"address\"}],\"name\":\"setCreatorObligor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"engine\",\"type\":\"address\"}],\"name\":\"setEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"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\"}],\"name\":\"setFinalizedState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"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\"}],\"name\":\"setState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"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 FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractPerformance\",\"name\":\"creditEventTypeCovered\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"coverageOfCreditEnhancement\",\"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\":\"cycleOfFee\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"contractReference_1\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"contractReference_2\",\"type\":\"tuple\"}],\"internalType\":\"struct CEGTerms\",\"name\":\"terms\",\"type\":\"tuple\"}],\"name\":\"setTerms\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approveActor(address)\":{\"details\":\"Can only be called by the owner of the contract.\",\"params\":{\"actor\":\"address of the actor\"}},\"getActor(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"address of the asset actor\"}},\"getEngine(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"address of the engine of the asset\"}},\"getEventAtIndex(bytes32,uint256)\":{\"params\":{\"assetId\":\"id of the asset\",\"index\":\"index of the event to return\"},\"returns\":{\"_0\":\"Event\"}},\"getFinalizedState(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"state of the asset\"}},\"getNextScheduleIndex(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"Index\"}},\"getNextScheduledEvent(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"event\"}},\"getOwnership(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"addresses of all owners of the asset\"}},\"getSchedule(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"the schedule\"}},\"getScheduleLength(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"Length of the schedule\"}},\"getState(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"state of the asset\"}},\"getTerms(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"terms of the asset\"}},\"grantAccess(bytes32,bytes4,address)\":{\"details\":\"Can only be called by an authorized account.\",\"params\":{\"account\":\"address of the account to grant access to\",\"assetId\":\"id of the asset\",\"methodSignature\":\"function / method signature (4 byte keccak256 hash of the method selector)\"}},\"hasAccess(bytes32,bytes4,address)\":{\"params\":{\"account\":\"address of the account for which to check access\",\"assetId\":\"id of the asset\",\"methodSignature\":\"function / method signature (4 byte keccak256 hash of the method selector)\"},\"returns\":{\"_0\":\"true if allowed access\"}},\"hasRootAccess(bytes32,address)\":{\"params\":{\"account\":\"address of the account for which to check root acccess\",\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"true if has root access\"}},\"isEventSettled(bytes32,bytes32)\":{\"params\":{\"_event\":\"event (encoded)\",\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"true if event was settled\"}},\"isRegistered(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"true if asset exist\"}},\"markEventAsSettled(bytes32,bytes32,int256)\":{\"details\":\"Can only be set by authorized account.\",\"params\":{\"_event\":\"event (encoded) to be marked as settled\",\"assetId\":\"id of the asset\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"popNextScheduledEvent(bytes32)\":{\"details\":\"Can only be updated by the assets actor or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\"}},\"registerAsset(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32[],(address,address,address,address),address,address,address)\":{\"params\":{\"actor\":\"account which is allowed to update the asset state\",\"admin\":\"account which as admin rights (optional)\",\"engine\":\"ACTUS Engine of the asset\",\"ownership\":\"ownership of the asset\",\"schedule\":\"schedule of the asset\",\"state\":\"initial state of the asset\",\"terms\":\"asset specific terms (CEGTerms)\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"revokeAccess(bytes32,bytes4,address)\":{\"details\":\"Can only be called by an authorized account.\",\"params\":{\"account\":\"address of the account to revoke access for\",\"assetId\":\"id of the asset\",\"methodSignature\":\"function / method signature (4 byte keccak256 hash of the method selector)\"}},\"setActor(bytes32,address)\":{\"params\":{\"actor\":\"address of the Actor contract\",\"assetId\":\"id of the asset\"}},\"setCounterpartyBeneficiary(bytes32,address)\":{\"details\":\"Can only be updated by the current counterparty beneficiary or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"newCounterpartyBeneficiary\":\"address of the new beneficiary\"}},\"setCounterpartyObligor(bytes32,address)\":{\"details\":\"Can only be updated by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"newCounterpartyObligor\":\"address of the new counterparty obligor\"}},\"setCreatorBeneficiary(bytes32,address)\":{\"details\":\"Can only be updated by the current creator beneficiary or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"newCreatorBeneficiary\":\"address of the new beneficiary\"}},\"setCreatorObligor(bytes32,address)\":{\"details\":\"Can only be updated by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"newCreatorObligor\":\"address of the new creator obligor\"}},\"setEngine(bytes32,address)\":{\"details\":\"Can only be set by authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"engine\":\"new engine address\"}},\"setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"details\":\"Can only be updated by the assets actor or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"state\":\"next state of the asset\"}},\"setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"details\":\"Can only be updated by the assets actor or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"state\":\"next state of the asset\"}},\"setTerms(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)))\":{\"details\":\"Can only be set by authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"terms\":\"new terms\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"CEGRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveActor(address)\":{\"notice\":\"Approves the address of an actor contract e.g. for registering assets.\"},\"getActor(bytes32)\":{\"notice\":\"Returns the address of the actor which is allowed to update the state of the asset.\"},\"getEngine(bytes32)\":{\"notice\":\"Returns the address of a the ACTUS engine corresponding to the ContractType of an asset.\"},\"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\"},\"getEventAtIndex(bytes32,uint256)\":{\"notice\":\"Returns an event for a given position (index) in a schedule of a given asset.\"},\"getFinalizedState(bytes32)\":{\"notice\":\"Returns the state of an asset.\"},\"getNextScheduleIndex(bytes32)\":{\"notice\":\"Returns the index of the next event to be processed for a schedule of an asset.\"},\"getNextScheduledEvent(bytes32)\":{\"notice\":\"Returns the next event to process.\"},\"getNextUnderlyingEvent(bytes32)\":{\"notice\":\"If the underlying of the asset changes in performance to a covered performance, it returns the exerciseDate event.\"},\"getOwnership(bytes32)\":{\"notice\":\"Retrieves the registered addresses of owners (creator, counterparty) of an asset.\"},\"getSchedule(bytes32)\":{\"notice\":\"Convenience method for retrieving the entire schedule Not recommended to execute method on-chain (if schedule is too long the tx may run out of gas)\"},\"getScheduleLength(bytes32)\":{\"notice\":\"Returns the length of a schedule of a given asset.\"},\"getState(bytes32)\":{\"notice\":\"Returns the state of an asset.\"},\"getTerms(bytes32)\":{\"notice\":\"Returns the terms of an asset.\"},\"grantAccess(bytes32,bytes4,address)\":{\"notice\":\"Grant access to an account to call a specific method on a specific asset.\"},\"hasAccess(bytes32,bytes4,address)\":{\"notice\":\"Check whether an account is allowed to call a specific method on a specific asset.\"},\"hasRootAccess(bytes32,address)\":{\"notice\":\"Check whether an account has root access for a specific asset.\"},\"isEventSettled(bytes32,bytes32)\":{\"notice\":\"Returns true if an event of an assets schedule was settled\"},\"isRegistered(bytes32)\":{\"notice\":\"Returns if there is an asset registerd for a given assetId\"},\"markEventAsSettled(bytes32,bytes32,int256)\":{\"notice\":\"Mark an event as settled\"},\"popNextScheduledEvent(bytes32)\":{\"notice\":\"Increments the index of a schedule of an asset. (if max index is reached the index will be left unchanged)\"},\"registerAsset(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32[],(address,address,address,address),address,address,address)\":{\"notice\":\"@param assetId id of the asset\"},\"revokeAccess(bytes32,bytes4,address)\":{\"notice\":\"Revoke access for an account to call a specific method on a specific asset.\"},\"setActor(bytes32,address)\":{\"notice\":\"Set the address of the Actor contract which should be going forward.\"},\"setCounterpartyBeneficiary(bytes32,address)\":{\"notice\":\"Updates the address of the default beneficiary of cashflows going to the counterparty.\"},\"setCounterpartyObligor(bytes32,address)\":{\"notice\":\"Update the address of the counterparty which has to fulfill obligations for the counterparty of the asset.\"},\"setCreatorBeneficiary(bytes32,address)\":{\"notice\":\"Update the address of the default beneficiary of cashflows going to the creator.\"},\"setCreatorObligor(bytes32,address)\":{\"notice\":\"Update the address of the obligor which has to fulfill obligations for the creator of the asset.\"},\"setEngine(bytes32,address)\":{\"notice\":\"Set the engine address which should be used for the asset going forward.\"},\"setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"notice\":\"Sets next finalized state of an asset.\"},\"setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"notice\":\"Sets next state of an asset.\"},\"setTerms(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)))\":{\"notice\":\"Set the terms of the asset\"}},\"notice\":\"Registry for ACTUS Protocol assets\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/CEGRegistry.sol\":\"CEGRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/AccessControl/AccessControl.sol\":{\"keccak256\":\"0x7cb99654f112c88d67ac567b688f2d38e54bf2d4eeb5c3df12bac7d68c85c6e8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://836ccdb22ebced3535672e70a0c41803b3064872ab18bfeeafff6c4437f128c2\",\"dweb:/ipfs/QmV3RuN1vmHoiZUFymS6FHeEHkcZy1yZyR13sfMwEDyjbr\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/AccessControl/IAccessControl.sol\":{\"keccak256\":\"0xbbe1aada0583637e5ae8b0a09ae59d629c1da70bde5a3f291f5f0ed42440d091\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://36ab01d00a9ebd59822247cdc7bee3c70af062e2c9408e8f80e1656fc9d2761c\",\"dweb:/ipfs/QmSQzma4M2TDZup2dERJi368F8z9UQQ1zyUsq8e41hgg2F\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistry.sol\":{\"keccak256\":\"0x9899864abf65d99906f23a24d6b4d52e1c6102c11993dad09f90e1d7bbc49744\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cd11e167f393e04f82f0619080f778239992d730b51b1771aaabdddf627ebdaf\",\"dweb:/ipfs/QmXaMYWTLW5xzhjkotfX63dtfRk1MsqJgM9uiqAUg6vtXe\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistryStorage.sol\":{\"keccak256\":\"0x872f4fd27fe80b6b3826bdaeaacdb77fb529d34235735f82e1413a5fe655f68b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c24b8fa53dfb2a11c67053c4b00de83307e45c83229e4b44f71d21eb9b0e5abd\",\"dweb:/ipfs/QmetZ6ptmsueoaCxjBMqpaZYdHgpjqPhjZurKbG2ZudbqY\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IAssetRegistry.sol\":{\"keccak256\":\"0xe5b75a0d1ff75775c43bdd46fb55d0f28800b311a48f7064acda7d35036bf738\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://652d2218a7190f85e00372a5ade97895fc303b909f3b63398dbcfabf634adda9\",\"dweb:/ipfs/QmVV4Su9V2K4mYbquft5rqv7SSyR95RcHgU4E2iAceKW1j\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IBaseRegistry.sol\":{\"keccak256\":\"0x62682585e8feaa25478d9aebe2f43861e36d67604adfd2dc23da8260a2f5728f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2ecdf3ac27c4425fee720cb2a744304678cac563d89cb21e43f8302a4864f013\",\"dweb:/ipfs/QmSL8qM6bytA7eN1cuBbBy3B5rNvmyALGExeGXUApTeA5N\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Ownership/IOwnershipRegistry.sol\":{\"keccak256\":\"0x6e7d79031d9ab6d8366e767e96bbef6282cd9727956b0f6a70b70ba57799afc7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2d2e1e72ffc43ce52bb06eb5c5fa61d9dc14d40c33ac3035e5d881e0365aa722\",\"dweb:/ipfs/QmaQ1SqtsZtPHjtdSbGTwSJvRPu36d7S4ijyfUMYcto5uJ\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Ownership/OwnershipRegistry.sol\":{\"keccak256\":\"0x3208a383e52d2ac8417093f9d165c1a6f32f625988f59fec26aeddff0dbcc490\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://45593942700d2bbdbe86f9420c9c365c503845089745a0f7ad7ffa811e559ed6\",\"dweb:/ipfs/QmeTLQdx1C6vnWmtrXbLGwaSk2axKFEzeiX6TQesTCjadZ\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/IScheduleRegistry.sol\":{\"keccak256\":\"0xe7e24ae32f711c7b4b60d1160cb085b4ba047ff07ccea2df3b4bf120c2385ed6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ea4f8bbb0a60f0b9484307c3ce880005e1d4e39c42fd07ca16dc263001584cdb\",\"dweb:/ipfs/Qmdo1tuJ93asEMGq74g38vxfRMmoxXogZZczHjuef2Mx8R\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/ScheduleEncoder.sol\":{\"keccak256\":\"0x887c1085da0a8f7b055ae73bc3337228d70cef2296521103abb5fcb53315313e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cb408a6f3e5f9394eacaeeaeb2d38db05f994b952cfaa6ca896c0af978cf27d7\",\"dweb:/ipfs/QmeDp1TWA1rGijSgQUPwCJoc933gPD8FVTkDTupppxuZhS\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/ScheduleRegistry.sol\":{\"keccak256\":\"0x5a377f9877c1748cf2e6ee158306f204e5d740e82ad2aa3b3ca680258edc8c36\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ad876b340f89357f3baf8dae0bfecd3758323f93019d1b4543da387f720c2f73\",\"dweb:/ipfs/QmQyDtzUtGgEz3JXnpU8qdg6tHAP3KWAfwgY6Y2Z8RytJo\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/IStateRegistry.sol\":{\"keccak256\":\"0x1008f735ba366f9a638199d8ec4fa31b192c8745491527278d97717426d6d609\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://decc19c372fbefee7c369678114861def1c748748154966e2ee5e11e690b9039\",\"dweb:/ipfs/QmXjZhoNak7uUmYZMj7sAdijzsqLpDoh6T2bYcRDVgX6z6\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateEncoder.sol\":{\"keccak256\":\"0x2668d331c79ff3eb189a5fd813fdc77ff9adb82c8c6323f3b09fd72e47674492\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://01ecc394db0ce16d5e415b55dd0bf78d7de70197ed3a60602b11a814451fd5ff\",\"dweb:/ipfs/QmfVdpeeuFXSjnUSMiwp9pS3gAhKE72zwBFdBy29DDLBH4\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateRegistry.sol\":{\"keccak256\":\"0xb370cd39c2cb2dafb80cd7c75f9239126715a7b5b537dff4ead9fa0cab8afe06\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6b848682df2d28ad4f3988193249488f0fe9d7e656678054efe258b7d0eb9ee1\",\"dweb:/ipfs/QmTFT5Gg55ZLsdrTQ73ZvDCjaCfNKeBK2MS9hwaxQXhoQK\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Terms/ITermsRegistry.sol\":{\"keccak256\":\"0x62947ddd2743f2852e53dc10c9ce4a326e764e0bbffd92df216fcb32a0b0e3cd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0b90268d7fb6e7d133b5e9d008be62fe55d19930088ac547b15d31dcb8ab9ecd\",\"dweb:/ipfs/QmZGE66r4ML3msBMCtDbhsdVN3RxmDvnCMDkTn9mMfouqN\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Terms/TermsRegistry.sol\":{\"keccak256\":\"0xbb72fb674b59a69ddfbbbae6646779d9a9e45d5f6ce058090cea73898c6144f3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://002359bb2412c5dfe0172701869a9014dfd8c5210b22f5cb7cd70e615cbe1b78\",\"dweb:/ipfs/QmPATHyGY8MhzKH96o37EWQx7n99C5kXgV4xyHt64szxPX\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/Conversions.sol\":{\"keccak256\":\"0x4482adab804008a2774b11036cc9ff6f42aa7f248d6b8ca922082bf090a736e5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e774c979286649c16d92eb4672c30c06fcbe7ddc053eee70088c4b28fc27e48c\",\"dweb:/ipfs/QmXqfezUnKVaKzA7Qs9BFC9yRKFTMwwxa778ofikE2hC1H\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol\":{\"keccak256\":\"0x5a918fdefe9bd357255bffcf75d325f0d23ccf7074533f8d6a80a62bfd60893e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5c5fc68f47deab5b0cc572a8a1f7dba997e5a8bb13292ce3e4ee29540a3b1fd7\",\"dweb:/ipfs/QmeqcqcDYsgvbBH8XrHzURMuz9jQLEf4F2i5M59wYMCxgt\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/CEGEncoder.sol\":{\"keccak256\":\"0xc91523067b50832ef7028bb9d131b9c81ae99c48c9da93f88a2893881f8f5ae0\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://236e270b2d983ef1ac22e503385ed92305347dd4f98881eeaa5cce1e72f2a849\",\"dweb:/ipfs/QmRDqBcp7HBQgf68bzeDQSreM8x9Jk1oERWKXC2FYbZ5vy\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/CEGRegistry.sol\":{\"keccak256\":\"0xb5a880fe8e47e38d655f7d9941e536253b93dcd00329dd72c2c6b3550e49f394\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ef95167b78c91369b785ed039584d9ffff962288dddd0f75311e5647217bb49b\",\"dweb:/ipfs/QmWuWZvXmd6awenUMEWCzYmLAuxhYtHVo1PSohmJ8zho8V\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/ICEGRegistry.sol\":{\"keccak256\":\"0xbb03daf61f217e6a9c241e5df143c094a8adfe2b0b77b739936d3c9ef0e1701d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f0248df70c8c941a9961bdb2ace085223aeb6965680c3d7f4326397aa61a5f86\",\"dweb:/ipfs/QmWYTwGP1je7WhMNSmKm6NDbdVJzgz9CqgtRf7vYMXKu8M\"]},\"@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/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/Engines/CEG/ICEGEngine.sol\":{\"keccak256\":\"0xedc41629661d186ac7b0a91d13d1dec18f0a6b94596dca992e1a0c6fd2ef1456\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6d88db090aa0494d8e8c33b93cd1f4eb96218b62b8d3afbc5fde945d78f8a898\",\"dweb:/ipfs/Qma6P3wHn4smrjRT79QXPGb5zjzkckgYC9ys7XFdKD23n3\"]},\"@atpar/actus-solidity/contracts/Engines/IEngine.sol\":{\"keccak256\":\"0xdee7e7d2f233c108231be14130dc2dbcf8eb0374636034f75c330a4cd3e1c7cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0fe8e1c0c4d447b4b180f53574016ff852af90faa1230be5b4c81464b9b5ffc8\",\"dweb:/ipfs/QmctLgYPvacjTzNS7iJBDkXjEzdbD4GDkVnZE9FJa26oX4\"]},\"@atpar/actus-solidity/contracts/external/BokkyPooBah/BokkyPooBahsDateTimeLibrary.sol\":{\"keccak256\":\"0x679533db9ba3257086015c0435c7d0de7a0a2f352a9de725db294e3f42c17391\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c586a5d8d9a654840c3655ccd4e47458d1e781c7542ec6fd2c29638b0dee57d\",\"dweb:/ipfs/QmeoQpnTMU4pa4iwKJcKmbNm7P54UCxux2G9rJyTCyq8GZ\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0xc6fb4c940628ca2cde81ed6d20fc9ff456b60f55aafef555f43a86a2dda7ad9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f17dda58954a84ffca3d53c0b6435bad7f5c42ab3a9c4603db2f1aef00edae4e\",\"dweb:/ipfs/QmehW99QmmzKvnqTsprsApDF7mK2JVo6nnrZ47znhLTFjh\"]},\"openzeppelin-solidity/contracts/access/Ownable.sol\":{\"keccak256\":\"0x4bd6402ca6b3419008c2b482aff54e66836e8cb4eba2680e42ac5884ae6424fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f9f711fb8d0d92aeea1c327e3845d13ca1fa8f142e47f8723cd5b3106fb29a3\",\"dweb:/ipfs/QmVQUReDW9f4zGqhizwHnyU8EntMs95tbASdqkGncnikba\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b506000620000276001600160e01b036200007716565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200007b565b3390565b615079806200008b6000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c80638da5cb5b1161019d578063d51dc3dc116100e9578063e7dc3188116100a2578063ecef55771161007c578063ecef55771461072e578063ee43eda114610741578063f2fde38b14610754578063f52f84e1146107675761030c565b8063e7dc3188146106f5578063e8f7ca3e14610708578063eb0125591461071b5761030c565b8063d51dc3dc14610676578063d981e77314610689578063de07a1731461069c578063def6a06f146106af578063e05a66e0146106c2578063e50e0ef7146106d55761030c565b8063b828204111610156578063bd1f0a6c11610130578063bd1f0a6c1461061d578063c3b6e7c214610630578063ccfc347e14610643578063cf5aed12146106565761030c565b8063b8282041146105c9578063ba4d2d28146105dc578063bc6a7d76146105fd5761030c565b80638da5cb5b14610548578063a17b75b51461055d578063b02ca0c014610570578063b0b4888f14610583578063b3c45ebe146105a3578063b461dd4f146105b65761030c565b8063512872f41161025c5780636be39bda1161021557806372540003116101ef57806372540003146104ee57806375e86ae41461050f5780637d870dd414610522578063811322fb146105355761030c565b80636be39bda146104a65780636fe55baa146104c6578063715018a6146104e65761030c565b8063512872f4146104475780636031a0941461045a578063606aa07e1461046d578063636701c41461048057806367fe5d70146104935780636a899b9b1461046d5761030c565b80631b126815116102c95780633549d08d116102a35780633549d08d146103ee57806337462dba1461040157806339262e87146104145780633adc277a146104275761030c565b80631b126815146103a857806327258b22146103c857806328e0f8a9146103db5761030c565b806303a81a2a1461031157806309648a9d146103265780630c5b75a41461034f5780630d62037a1461036f578063135b9f4d146103825780631717e86714610395575b600080fd5b61032461031f366004613c26565b61077a565b005b610339610334366004613bf6565b61084f565b6040516103469190614e3e565b60405180910390f35b61036261035d366004613bf6565b610876565b60405161034691906145c4565b61032461037d366004613c26565b6108ed565b610362610390366004613c55565b610992565b6103246103a3366004613ca1565b610a31565b6103bb6103b6366004613ca1565b610ae7565b60405161034691906145a9565b6103bb6103d6366004613bf6565b610b64565b6103626103e9366004613bf6565b610b79565b6103246103fc366004613c26565b610b8e565b61033961040f366004613bf6565b610c69565b610324610422366004613ca1565b610c88565b61043a610435366004613bf6565b610d2d565b6040516103469190614565565b610324610455366004613c26565b610d47565b610324610468366004613c26565b610e0e565b61036261047b366004613c55565b610ee9565b61032461048e366004613d1b565b610f07565b6103246104a1366004613e02565b611016565b6104b96104b4366004613bf6565b6110dc565b6040516103469190614dd8565b6104d96104d4366004613c55565b61117a565b6040516103469190614e30565b610324611219565b6105016104fc366004613bf6565b611298565b604051610346929190614689565b61036261051d366004613bf6565b6112c1565b610324610530366004613e02565b611695565b610362610543366004613e26565b61174e565b61055061175c565b6040516103469190614537565b61036261056b366004613bf6565b61176b565b61036261057e366004613c55565b611780565b610596610591366004613c55565b6117a1565b6040516103469190614e22565b6105506105b1366004613bf6565b611840565b6103626105c4366004613c55565b61185f565b6103626105d7366004613bf6565b6118a5565b6105ef6105ea366004613c55565b611978565b6040516103469291906145b4565b61061061060b366004613c55565b6119a2565b6040516103469190614e14565b61032461062b366004613c26565b611a41565b61036261063e366004613bf6565b611ad9565b6103bb610651366004613ba2565b611cd6565b610669610664366004613c55565b611ceb565b6040516103469190614f23565b610362610684366004613c55565b611d09565b610324610697366004613c55565b611d4f565b6103246106aa366004613c76565b611dbe565b6103246106bd366004613cee565b611e5a565b6103626106d0366004613e42565b611f5a565b6106e86106e3366004613bf6565b611f78565b6040516103469190614b90565b610324610703366004613ba2565b611fd6565b6103bb610716366004613c26565b61202f565b610550610729366004613c55565b612065565b61066961073c366004613c55565b6120fb565b61055061074f366004613bf6565b61218f565b610324610762366004613ba2565b6121af565b610362610775366004613bf6565b612265565b6000828152600160208190526040909120015482906001600160a01b03163314806107b757506107b7816000356001600160e01b03191633610ae7565b6107dc5760405162461bcd60e51b81526004016107d390614802565b60405180910390fd5b6000838152600160208190526040918290200180546001600160a01b038581166001600160a01b0319831617909255915191169084907f6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a2090610841908490879061454b565b60405180910390a250505050565b6108576137f2565b600082815260016020526040902061086e9061227a565b90505b919050565b60008181526001602081905260408220015482906001600160a01b03163314806108b257506108b2816000356001600160e01b03191633610ae7565b6108ce5760405162461bcd60e51b81526004016107d390614802565b6000838152600160205260408120600601805491905591505b50919050565b610904826000356001600160e01b03191633610ae7565b6109205760405162461bcd60e51b81526004016107d390614ad4565b6000828152600160205260409081902060070180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e2590610985908590849086906145cd565b60405180910390a1505050565b6000828152600160205260408082209051632b34c55f60e01b815273__CEGEncoder____________________________91632b34c55f916109d891908690600401614bcb565b60206040518083038186803b1580156109f057600080fd5b505af4158015610a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613c0e565b90505b92915050565b610a48836000356001600160e01b03191633610ae7565b610a645760405162461bcd60e51b81526004016107d390614a85565b60008381526001602081815260408084206001600160e01b031987168552600c0182528084206001600160a01b038616808652925292839020805460ff1916909217909155905184907face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb4786590610ada908690614674565b60405180910390a3505050565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516845290915281205460ff1680610b5a57506000848152600160209081526040808320838052600c0182528083206001600160a01b038616845290915290205460ff165b90505b9392505050565b60009081526001602052604090205460ff1690565b60009081526001602052604090206005015490565b6000828152600160205260409020600a01546001600160a01b031680610bc65760405162461bcd60e51b81526004016107d3906146a5565b336001600160a01b0382161480610bef5750610bef836000356001600160e01b03191633610ae7565b610c0b5760405162461bcd60e51b81526004016107d390614702565b60008381526001602052604090819020600a0180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce90610985908590849086906145cd565b610c716137f2565b600082815260016020526040902061086e90612572565b610c9f836000356001600160e01b03191633610ae7565b610cbb5760405162461bcd60e51b81526004016107d390614a85565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516808552925291829020805460ff19169055905184907f42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa90610ada908690614674565b600081815260016020526040902060609061086e90612894565b6000828152600160208190526040909120015482906001600160a01b0316331480610d845750610d84816000356001600160e01b03191633610ae7565b610da05760405162461bcd60e51b81526004016107d390614802565b6000838152600160205260409081902080546001600160a01b03858116610100908102610100600160a81b03198416179093559251919004919091169084907fdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb90610841908490879061454b565b6000828152600160205260409020600801546001600160a01b031680610e465760405162461bcd60e51b81526004016107d390614a28565b336001600160a01b0382161480610e6f5750610e6f836000356001600160e01b03191633610ae7565b610e8b5760405162461bcd60e51b81526004016107d3906148f0565b6000838152600160205260409081902060080180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce90610985908590849086906145cd565b6000828152600160205260408120610a28908363ffffffff61292a16565b3360009081526002602052604090205460ff16610f365760405162461bcd60e51b81526004016107d39061489c565b610f9489610f49368a90038a018a6140d5565b888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610f8c9250505036899003890189613e6d565b878787612940565b600089815260016020526040908190209051630c41805d60e11b815273__CEGEncoder____________________________9163188300ba91610fdb91908c90600401614bd9565b60006040518083038186803b158015610ff357600080fd5b505af4158015611007573d6000803e3d6000fd5b50505050505050505050505050565b6000828152600160208190526040909120015482906001600160a01b03163314806110535750611053816000356001600160e01b03191633610ae7565b61106f5760405162461bcd60e51b81526004016107d390614802565b61109b611081368490038401846140d5565b60008581526001602052604090209063ffffffff612ac516565b827f0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f83602001356040516110cf91906145c4565b60405180910390a2505050565b6110e461388c565b60008281526001602052604090819020905163197bc8e960e21b815273__CEGEncoder____________________________916365ef23a49161112991906004016145c4565b6104e06040518083038186803b15801561114257600080fd5b505af4158015611156573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e9190613ed5565b61118261397f565b60008381526001602052604090819020905163bf5f9be360e01b815273__CEGEncoder____________________________9163bf5f9be3916111c991908690600401614bcb565b60606040518083038186803b1580156111e157600080fd5b505af41580156111f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2891906140ba565b611221612df3565b6000546001600160a01b0390811691161461124e5760405162461bcd60e51b81526004016107d390614996565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c8111156112ac57fe5b92505067ffffffffffffffff83169050915091565b60006112cb6139a2565b6112eb8372636f6e74726163745265666572656e63655f3160681b6119a2565b80519091501580159061130d575060038160600151600481111561130b57fe5b145b1561168c5780516020820151604051631392c59160e11b81526001600160a01b038216906327258b22906113459085906004016145c4565b60206040518083038186803b15801561135d57600080fd5b505afa158015611371573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113959190613bda565b6113b15760405162461bcd60e51b81526004016107d390614b28565b60006113cc866b65786572636973654461746560a01b610ee9565b905060006113f3877518dc99591a5d115d995b9d151e5c1950dbdd995c995960521b6120fb565b60ff16600581111561140157fe5b90506000836001600160a01b031663cf5aed12866040518263ffffffff1660e01b8152600401611431919061464f565b60206040518083038186803b15801561144957600080fd5b505afa15801561145d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148191906141d2565b60ff16600581111561148f57fe5b90506000846001600160a01b031663606aa07e876040518263ffffffff1660e01b81526004016114bf919061462c565b60206040518083038186803b1580156114d757600080fd5b505afa1580156114eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150f9190613c0e565b9050831561153057611522601b42611f5a565b975050505050505050610871565b600083600581111561153e57fe5b14158015611561575082600581111561155357fe5b82600581111561155f57fe5b145b1561168557600182600581111561157457fe5b141561158557611522601a82611f5a565b600282600581111561159357fe5b141561163d576115a161397f565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906115cd908a906004016145ec565b60606040518083038186803b1580156115e557600080fd5b505afa1580156115f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161d91906140ba565b905061162e601a6106d08385612df7565b98505050505050505050610871565b600382600581111561164b57fe5b14156116855761165961397f565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906115cd908a90600401614609565b5050505050505b50600092915050565b6000828152600160208190526040909120015482906001600160a01b03163314806116d257506116d2816000356001600160e01b03191633610ae7565b6116ee5760405162461bcd60e51b81526004016107d390614802565b61171a611700368490038401846140d5565b60008581526001602052604090209063ffffffff612f2316565b827fad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec683602001356040516110cf91906145c4565b600081601c81111561086e57fe5b6000546001600160a01b031690565b60009081526001602052604090206004015490565b60009182526001602090815260408084209284526003909201905290205490565b6117a96139c9565b6000838152600160205260409081902090516319cb3fdf60e31b815273__CEGEncoder____________________________9163ce59fef8916117f091908690600401614bcb565b60806040518083038186803b15801561180857600080fd5b505af415801561181c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a28919061409f565b600090815260016020819052604090912001546001600160a01b031690565b6000828152600160205260408082209051631b00116b60e11b815273__CEGEncoder____________________________9163360022d6916109d891908690600401614bcb565b6000818152600160205260408120816118bd84613219565b600583015460009081526003840160205260409020546004840154919250901580156118e7575081155b156118f9575060009250610871915050565b60008061190584611298565b9150915060008061191585611298565b9150915080600014806119315750821580159061193157508083105b8061195557508083148015611955575061194a8261174e565b6119538561174e565b105b156119695785975050505050505050610871565b84975050505050505050610871565b6000918252600160208181526040808520938552600f90930190529120805491015460ff90911691565b6119aa6139a2565b6000838152600160205260409081902090516326af533960e21b815273__CEGEncoder____________________________91639abd4ce4916119f191908690600401614bcb565b60806040518083038186803b158015611a0957600080fd5b505af4158015611a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190614084565b611a58826000356001600160e01b03191633610ae7565b611a745760405162461bcd60e51b81526004016107d3906147a5565b6000828152600160205260409081902060090180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e2590610985908590849086906145cd565b60008181526001602081905260408220015482906001600160a01b0316331480611b155750611b15816000356001600160e01b03191633610ae7565b611b315760405162461bcd60e51b81526004016107d390614802565b600083815260016020526040812090611b4985613219565b60058301546000908152600384016020526040902054600484015491925090158015611b73575081155b15611b855750600093506108e7915050565b600080611b9184611298565b91509150600080611ba185611298565b9150915084861415611c16578260028801600086601c811115611bc057fe5b601c811115611bcb57fe5b8152602081019190915260400160002055600487015460058801541415611bfd5750600097506108e795505050505050565b5050506005909301805460010190555092506108e79050565b801580611c2c57508215801590611c2c57508083105b80611c5057508083148015611c505750611c458261174e565b611c4e8561174e565b105b15611c93578260028801600086601c811115611c6857fe5b601c811115611c7357fe5b8152602081019190915260400160002055509396506108e7945050505050565b801580611ca7575060048701546005880154145b15611cbd5750600097506108e795505050505050565b50505060059093018054600101905593506108e7915050565b60026020526000908152604090205460ff1681565b6000828152600160205260408120610a28908363ffffffff6133bb16565b600082815260016020526040808220905163af08bc9560e01b815273__CEGEncoder____________________________9163af08bc95916109d891908690600401614bcb565b6000828152600160208190526040909120015482906001600160a01b0316331480611d8c5750611d8c816000356001600160e01b03191633610ae7565b611da85760405162461bcd60e51b81526004016107d390614802565b5060009182526001602052604090912060060155565b6000838152600160208190526040909120015483906001600160a01b0316331480611dfb5750611dfb816000356001600160e01b03191633610ae7565b611e175760405162461bcd60e51b81526004016107d390614802565b50604080518082018252600180825260208083019485526000968752818152838720958752600f90950190945293209251835460ff191690151517835551910155565b6000828152600160208190526040909120015482906001600160a01b0316331480611e975750611e97816000356001600160e01b03191633610ae7565b611eb35760405162461bcd60e51b81526004016107d390614802565b600083815260016020526040908190209051630c41805d60e11b815273__CEGEncoder____________________________9163188300ba91611efa91908690600401614bd9565b60006040518083038186803b158015611f1257600080fd5b505af4158015611f26573d6000803e3d6000fd5b50506040518592507fb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb9150600090a2505050565b60008160f884601c811115611f6b57fe5b60ff16901b179392505050565b611f806139ea565b50600090815260016020908152604091829020825160808101845260078201546001600160a01b03908116825260088301548116938201939093526009820154831693810193909352600a015416606082015290565b611fde612df3565b6000546001600160a01b0390811691161461200b5760405162461bcd60e51b81526004016107d390614996565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000918252600160209081526040808420848052600c0182528084206001600160a01b0393909316845291905290205460ff1690565b6000828152600160205260408082209051636749043d60e01b815273__CEGEncoder____________________________91636749043d916120ab91908690600401614bcb565b60206040518083038186803b1580156120c357600080fd5b505af41580156120d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613bbe565b600082815260016020526040808220905162908ced60e01b815273__CEGEncoder____________________________9162908ced9161213f91908690600401614bcb565b60206040518083038186803b15801561215757600080fd5b505af415801561216b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2891906141d2565b60009081526001602052604090205461010090046001600160a01b031690565b6121b7612df3565b6000546001600160a01b039081169116146121e45760405162461bcd60e51b81526004016107d390614996565b6001600160a01b03811661220a5760405162461bcd60e51b81526004016107d39061475f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526001602052604090206006015490565b6122826137f2565b604080516102808101825272636f6e7472616374506572666f726d616e636560681b6000908152600e85016020529190912054819060f81c60058111156122c557fe5b60058111156122d057fe5b8152697374617475734461746560b01b6000908152600e8501602081815260408084205482860152706e6f6e506572666f726d696e674461746560781b845282825280842054818601526b6d617475726974794461746560a01b84528282528084205460608601526b65786572636973654461746560a01b84528282528084205460808601526e7465726d696e6174696f6e4461746560881b84528282528084205460a08601526c6c617374436f75706f6e44617960981b84528282528084205460c0860152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b84528282528084205460e08601526e1858d8dc9d5959125b9d195c995cdd608a1b845282825280842054610100860152691999595058d8dc9d595960b21b845282825280842054610120860152726e6f6d696e616c496e7465726573745261746560681b8452828252808420546101408601527834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b845282825280842054610160860152783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b8452828252808420546101808601527f6e6578745072696e636970616c526564656d7074696f6e5061796d656e7400008452828252808420546101a08601526d195e195c98da5cd9505b5bdd5b9d60921b8452828252808420546101c08601526f65786572636973655175616e7469747960801b8452828252808420546101e0860152677175616e7469747960c01b8452828252808420546102008601527018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b8452828252808420546102208601526b36b0b933b4b72330b1ba37b960a11b8452828252808420546102408601526f30b2353ab9ba36b2b73a2330b1ba37b960811b8452919052902054610260909101529050919050565b61257a6137f2565b604080516102808101825274465f636f6e7472616374506572666f726d616e636560581b6000908152600e85016020529190912054819060f81c60058111156125bf57fe5b60058111156125ca57fe5b81526b465f7374617475734461746560a01b6000908152600e850160208181526040808420548286015272465f6e6f6e506572666f726d696e674461746560681b845282825280842054818601526d465f6d617475726974794461746560901b84528282528084205460608601526d465f65786572636973654461746560901b845282825280842054608086015270465f7465726d696e6174696f6e4461746560781b84528282528084205460a08601526e465f6c617374436f75706f6e44617960881b84528282528084205460c0860152721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b84528282528084205460e0860152701197d858d8dc9d5959125b9d195c995cdd607a1b8452828252808420546101008601526b1197d999595058d8dc9d595960a21b84528282528084205461012086015274465f6e6f6d696e616c496e7465726573745261746560581b8452828252808420546101408601527f465f696e7465726573745363616c696e674d756c7469706c69657200000000008452828252808420546101608601527f465f6e6f74696f6e616c5363616c696e674d756c7469706c69657200000000008452828252808420546101808601527f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e748452828252808420546101a08601526f1197d95e195c98da5cd9505b5bdd5b9d60821b8452828252808420546101c086015271465f65786572636973655175616e7469747960701b8452828252808420546101e086015269465f7175616e7469747960b01b845282825280842054610200860152721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b8452828252808420546102208601526d232fb6b0b933b4b72330b1ba37b960911b84528282528084205461024086015271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b8452919052902054610260909101529050919050565b606080826002016002015467ffffffffffffffff811180156128b557600080fd5b506040519080825280602002602001820160405280156128df578160200160208202803683370190505b50905060005b6004840154811015612923576000818152600385016020526040902054825183908390811061291057fe5b60209081029190910101526001016128e5565b5092915050565b6000908152600e91909101602052604090205490565b6000878152600160205260409020805460ff16156129705760405162461bcd60e51b81526004016107d390614851565b6001600160a01b03831660009081526002602052604090205460ff1615156001146129ad5760405162461bcd60e51b81526004016107d39061494d565b805485516007830180546001600160a01b03199081166001600160a01b039384161790915560208801516008850180548316918416919091179055604088015160098501805483169184169190911790556060880151600a85018054831691841691909117905560ff199092166001908117610100600160a81b0319166101008884160217845583018054909216908516179055612a4b8188612f23565b612a5b818863ffffffff612ac516565b612a6b818763ffffffff61346716565b6001600160a01b03821615612a8457612a8488836134d4565b7f5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd8964688604051612ab391906145c4565b60405180910390a15050505050505050565b612afe8274465f636f6e7472616374506572666f726d616e636560581b60f884600001516005811115612af457fe5b60ff16901b61354b565b612b1f826b465f7374617475734461746560a01b836020015160001b61354b565b612b478272465f6e6f6e506572666f726d696e674461746560681b836040015160001b61354b565b612b6a826d465f6d617475726974794461746560901b836060015160001b61354b565b612b8d826d465f65786572636973654461746560901b836080015160001b61354b565b612bb38270465f7465726d696e6174696f6e4461746560781b8360a0015160001b61354b565b612bdb82721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b8360e0015160001b61354b565b612c0282701197d858d8dc9d5959125b9d195c995cdd607a1b83610100015160001b61354b565b612c24826b1197d999595058d8dc9d595960a21b83610120015160001b61354b565b612c4f8274465f6e6f6d696e616c496e7465726573745261746560581b83610140015160001b61354b565b612c82827f465f696e7465726573745363616c696e674d756c7469706c696572000000000083610160015160001b61354b565b612cb5827f465f6e6f74696f6e616c5363616c696e674d756c7469706c696572000000000083610180015160001b61354b565b612ce8827f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e74836101a0015160001b61354b565b612d0e826f1197d95e195c98da5cd9505b5bdd5b9d60821b836101c0015160001b61354b565b612d368271465f65786572636973655175616e7469747960701b836101e0015160001b61354b565b612d568269465f7175616e7469747960b01b83610200015160001b61354b565b612d7f82721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b83610220015160001b61354b565b612da3826d232fb6b0b933b4b72330b1ba37b960911b83610240015160001b61354b565b612dcb8271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b83610260015160001b61354b565b612def826e465f6c617374436f75706f6e44617960881b8360c0015160001b61354b565b5050565b3390565b6000808084602001516005811115612e0b57fe5b1415612e2b578351612e2490849063ffffffff61357d16565b9050610a28565b600184602001516005811115612e3d57fe5b1415612e59578351612e2490849060070263ffffffff61357d16565b600284602001516005811115612e6b57fe5b1415612e84578351612e2490849063ffffffff61359216565b600384602001516005811115612e9657fe5b1415612eb2578351612e2490849060030263ffffffff61359216565b600484602001516005811115612ec457fe5b1415612ee0578351612e2490849060060263ffffffff61359216565b600584602001516005811115612ef257fe5b1415612f0b578351612e2490849063ffffffff61360e16565b60405162461bcd60e51b81526004016107d3906149cb565b612f508272636f6e7472616374506572666f726d616e636560681b60f884600001516005811115612af457fe5b612f6f82697374617475734461746560b01b836020015160001b61354b565b612f9582706e6f6e506572666f726d696e674461746560781b836040015160001b61354b565b612fb6826b6d617475726974794461746560a01b836060015160001b61354b565b612fd7826b65786572636973654461746560a01b836080015160001b61354b565b612ffb826e7465726d696e6174696f6e4461746560881b8360a0015160001b61354b565b61302182701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b8360e0015160001b61354b565b613046826e1858d8dc9d5959125b9d195c995cdd608a1b83610100015160001b61354b565b61306682691999595058d8dc9d595960b21b83610120015160001b61354b565b61308f82726e6f6d696e616c496e7465726573745261746560681b83610140015160001b61354b565b6130be827834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b83610160015160001b61354b565b6130ed82783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b83610180015160001b61354b565b613120827f6e6578745072696e636970616c526564656d7074696f6e5061796d656e740000836101a0015160001b61354b565b613144826d195e195c98da5cd9505b5bdd5b9d60921b836101c0015160001b61354b565b61316a826f65786572636973655175616e7469747960801b836101e0015160001b61354b565b61318882677175616e7469747960c01b83610200015160001b61354b565b6131af827018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b83610220015160001b61354b565b6131d1826b36b0b933b4b72330b1ba37b960a11b83610240015160001b61354b565b6131f7826f30b2353ab9ba36b2b73a2330b1ba37b960811b83610260015160001b61354b565b612def826c6c617374436f75706f6e44617960981b8360c0015160001b61354b565b600081815260016020526040812061322f61388c565b60405163197bc8e960e21b815273__CEGEncoder____________________________906365ef23a4906132669085906004016145c4565b6104e06040518083038186803b15801561327f57600080fd5b505af4158015613293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132b79190613ed5565b82549091506000908190819081906133639061010090046001600160a01b031663b90f73688760028a0185600381526020019081526020016000205460036040518463ffffffff1660e01b815260040161331393929190614de7565b60206040518083038186803b15801561332b57600080fd5b505afa15801561333f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc9190613c0e565b91509150826000148061337557508281105b8061339957508083148015613399575061338e8461174e565b6133978361174e565b105b156133a5578092508193505b50506133b18282611f5a565b9695505050505050565b600072636f6e7472616374506572666f726d616e636560681b82141561340c575072636f6e7472616374506572666f726d616e636560681b6000908152600e8301602052604090205460f81c610a2b565b74465f636f6e7472616374506572666f726d616e636560581b82141561345f575074465f636f6e7472616374506572666f726d616e636560581b6000908152600e8301602052604090205460f81c610a2b565b506000610a2b565b60005b81518110156134cf576000801b82828151811061348357fe5b60200260200101511415613496576134cf565b8181815181106134a257fe5b6020908102919091018101516000838152600386019092526040909120556001016004830181905561346a565b505050565b6000828152600160208181526040808420848052600c0182528084206001600160a01b0386168086529252808420805460ff19169093179092559051909184917face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb478659161353f91614674565b60405180910390a35050565b6000828152600e84016020526040902054811415613568576134cf565b6000918252600e929092016020526040902055565b620151808102820182811015610a2b57600080fd5b60008080806135a662015180875b04613635565b600c9188016000198101838104949094019650945092509006600101915060006135d084846136cb565b9050808211156135de578091505b620151808706620151806135f3868686613751565b020194508685101561360457600080fd5b5050505092915050565b600080808061362062015180876135a0565b91870194509250905060006135d084846136cb565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f846050028161368c57fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b600081600114806136dc5750816003145b806136e75750816005145b806136f25750816007145b806136fd5750816008145b80613708575081600a145b80613713575081600c145b156137205750601f610a2b565b816002146137305750601e610a2b565b613739836137cd565b61374457601c613747565b601d5b60ff169392505050565b60006107b284101561376257600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f028161379e57fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b6000600482061580156137e257506064820615155b8061086e57505061019090061590565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610340810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200161394661397f565b815260200161395361397f565b81526020016139606139c9565b815260200161396d6139a2565b815260200161397a6139a2565b905290565b6040805160608101909152600080825260208201905b8152600060209091015290565b6040805160808101825260008082526020820181905290918201908152602001600061397a565b60408051608081019091526000808252602082019081526020016000613995565b60408051608081018252600080825260208201819052918101829052606081019190915290565b8035610a2b81614fc5565b8051610a2b81614fc5565b8051610a2b81614fe8565b8051610a2b81614ff5565b8035610a2b81615002565b8051610a2b81615002565b8051610a2b8161501c565b8035610a2b81615029565b8051610a2b81615029565b6000608082840312156108e7578081fd5b60006104e082840312156108e7578081fd5b600060808284031215613aa8578081fd5b613ab26080614f31565b905081518152602082015160208201526040820151613ad08161500f565b60408201526060820151613ae38161500f565b606082015292915050565b600060808284031215613aff578081fd5b613b096080614f31565b9050815181526020820151613b1d81615002565b60208201526040820151613b3081614ff5565b60408201526060820151613ae381614fda565b600060608284031215613b54578081fd5b613b5e6060614f31565b9050815181526020820151613b7281615002565b60208201526040820151613b8581614fda565b604082015292915050565b600061028082840312156108e7578081fd5b600060208284031215613bb3578081fd5b8135610a2881614fc5565b600060208284031215613bcf578081fd5b8151610a2881614fc5565b600060208284031215613beb578081fd5b8151610a2881614fda565b600060208284031215613c07578081fd5b5035919050565b600060208284031215613c1f578081fd5b5051919050565b60008060408385031215613c38578081fd5b823591506020830135613c4a81614fc5565b809150509250929050565b60008060408385031215613c67578182fd5b50508035926020909101359150565b600080600060608486031215613c8a578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215613cb5578081fd5b8335925060208401356001600160e01b031981168114613cd3578182fd5b91506040840135613ce381614fc5565b809150509250925092565b6000806105008385031215613d01578182fd5b82359150613d128460208501613a85565b90509250929050565b60008060008060008060008060006108808a8c031215613d39578687fd5b89359850613d4a8b60208c01613a85565b9750613d5a8b6105008c01613b90565b96506107808a013567ffffffffffffffff80821115613d77578687fd5b818c018d601f820112613d88578788fd5b8035925081831115613d98578788fd5b8d60208085028301011115613dab578788fd5b6020019750909550613dc390508b6107a08c01613a74565b9350613dd38b6108208c01613a11565b9250613de38b6108408c01613a11565b9150613df38b6108608c01613a11565b90509295985092959850929598565b6000806102a08385031215613e15578182fd5b82359150613d128460208501613b90565b600060208284031215613e37578081fd5b8135610a2881615036565b60008060408385031215613e54578182fd5b8235613e5f81615036565b946020939093013593505050565b600060808284031215613e7e578081fd5b613e886080614f31565b8235613e9381614fc5565b81526020830135613ea381614fc5565b60208201526040830135613eb681614fc5565b60408201526060830135613ec981614fc5565b60608201529392505050565b60006104e08284031215613ee7578081fd5b613ef2610340614f31565b613efc8484613a69565b8152613f0b8460208501613a32565b6020820152613f1d8460408501613a53565b6040820152613f2f8460608501613a48565b6060820152613f418460808501613a27565b6080820152613f538460a08501613a32565b60a0820152613f658460c08501613a32565b60c0820152613f778460e08501613a48565b60e0820152610100613f8b85828601613a1c565b90820152610120613f9e85858301613a1c565b908201526101408381015190820152610160808401519082015261018080840151908201526101a080840151908201526101c080840151908201526101e08084015190820152610200808401519082015261022080840151908201526102408084015190820152610260808401519082015261028080840151908201526102a061402a85828601613b43565b9082015261030061403d85858301613b43565b6102c0830152614051856103608601613aee565b6102e0830152614065856103e08601613a97565b90820152614077846104608501613a97565b6103208201529392505050565b600060808284031215614095578081fd5b610a288383613a97565b6000608082840312156140b0578081fd5b610a288383613aee565b6000606082840312156140cb578081fd5b610a288383613b43565b60006102808083850312156140e8578182fd5b6140f181614f31565b6140fb8585613a3d565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b6000602082840312156141e3578081fd5b815160ff81168114610a28578182fd5b6001600160a01b03169052565b6009811061420a57fe5b9052565b61420a81614fa4565b61420a81614fb1565b600d811061420a57fe5b6013811061420a57fe5b61423f82825161422a565b6020810151614251602084018261420e565b5060408101516142646040840182614220565b5060608101516142776060840182614217565b50608081015161428a6080840182614200565b5060a081015161429d60a084018261420e565b5060c08101516142b060c084018261420e565b5060e08101516142c360e0840182614217565b50610100808201516142d7828501826141f3565b5050610120808201516142ec828501826141f3565b50506101408181015190830152610160808201519083015261018080820151908301526101a080820151908301526101c080820151908301526101e08082015190830152610200808201519083015261022080820151908301526102408082015190830152610260808201519083015261028080820151908301526102a08082015161437a82850182614513565b50506102c081015161030061439181850183614513565b6102e083015191506143a76103608501836144a1565b82015190506143ba6103e084018261441b565b506103208101516134cf61046084018261441b565b803582526020810135602083015260408101356143eb8161500f565b6143f481614fbb565b604083015260608101356144078161500f565b61441081614fbb565b806060840152505050565b8051825260208101516020830152604081015161443781614fbb565b6040830152606081015161441081614fbb565b80358252602081013561445c81615002565b61446581614fb1565b6020830152604081013561447881614ff5565b61448181614fa4565b6040830152606081013561449481614fda565b8015156060840152505050565b8051825260208101516144b381614fb1565b602083015260408101516144c681614fa4565b60408301526060908101511515910152565b8035825260208101356144ea81615002565b6144f381614fb1565b6020830152604081013561450681614fda565b8015156040840152505050565b80518252602081015161452581614fb1565b60208301526040908101511515910152565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561459d57835183529284019291840191600101614581565b50909695505050505050565b901515815260200190565b9115158252602082015260400190565b90815260200190565b9283526001600160a01b03918216602084015216604082015260600190565b9081526a19dc9858d954195c9a5bd960aa1b602082015260400190565b9081527019195b1a5b9c5d595b98de54195c9a5bd9607a1b602082015260400190565b908152706e6f6e506572666f726d696e674461746560781b602082015260400190565b90815272636f6e7472616374506572666f726d616e636560681b602082015260400190565b6001600160e01b031991909116815260200190565b6040810161469684614f99565b82528260208301529392505050565b6020808252603e908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20454e5452595f444f45535f4e4f545f45584953540000606082015260800190565b6020808252603d908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20554e415554484f52495a45445f53454e444552000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526039908201527f417373657452656769737472792e736574436f756e74657270617274794f626c60408201527f69676f723a20554e415554484f52495a45445f53454e44455200000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e6973417574686f72697a65643a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b6020808252602b908201527f4261736552656769737472792e73657441737365743a2041535345545f414c5260408201526a454144595f45584953545360a81b606082015260800190565b60208082526034908201527f4261736552656769737472792e6f6e6c79417070726f7665644163746f72733a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526038908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20554e415554484f52495a45445f53454e4445520000000000000000606082015260800190565b60208082526029908201527f4261736552656769737472792e73657441737365743a204143544f525f4e4f5460408201526817d054141493d5915160ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526039908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20454e5452595f444f45535f4e4f545f455849535400000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e7265766f6b654163636573733a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b60208082526034908201527f417373657452656769737472792e73657443726561746f724f626c69676f723a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526042908201527f41737365744163746f722e6765744e657874556e6465726c79696e674576656e60408201527f743a20554e4445524c59494e475f41535345545f444f45535f4e4f545f45584960608201526114d560f21b608082015260a00190565b81516001600160a01b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b918252602082015260400190565b8281526105008101602083810190614bfc908401614bf78387613a5e565b61422a565b614c068185614f72565b614c13604085018261420e565b5050614c226040840184614f8c565b614c2f6060840182614220565b50614c3d6060840184614f7f565b614c4a6080840182614217565b50614c586080840184614f65565b614c6560a0840182614200565b50614c7360a0840184614f72565b614c8060c084018261420e565b50614c8e60c0840184614f72565b614c9b60e084018261420e565b50614ca960e0840184614f7f565b610100614cb881850183614217565b614cc481860186614f58565b915050610120614cd6818501836141f3565b614ce281860186614f58565b915050610140614cf4818501836141f3565b610160915080850135828501525061018081850135818501526101a091508085013582850152506101c081850135818501526101e09150808501358285015250610200818501358185015261022091508085013582850152506102408185013581850152610260915080850135828501525061028081850135818501526102a09150808501358285015250614d8f6102c084018286016144d8565b50614da2610320830161030085016144d8565b614db46103808301610360850161444a565b614dc661040083016103e085016143cf565b610b5d610480830161046085016143cf565b6104e08101610a2b8284614234565b6105208101614df68286614234565b836104e0830152614e0683614f99565b610500830152949350505050565b60808101610a2b828461441b565b60808101610a2b82846144a1565b60608101610a2b8284614513565b600061028082019050614e52828451614217565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715614f5057600080fd5b604052919050565b60008235610a2881614fc5565b60008235610a2881614fe8565b60008235610a2881614ff5565b60008235610a2881615002565b60008235610a288161501c565b80601d811061087157fe5b60028110614fae57fe5b50565b60068110614fae57fe5b60058110614fae57fe5b6001600160a01b0381168114614fae57600080fd5b8015158114614fae57600080fd5b60098110614fae57600080fd5b60028110614fae57600080fd5b60068110614fae57600080fd5b60058110614fae57600080fd5b600d8110614fae57600080fd5b60138110614fae57600080fd5b601d8110614fae57600080fdfea26469706673582212204fd03df05009af18600025bd2ad18913ac61a60061d4641cefec98c5772daac564736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061030c5760003560e01c80638da5cb5b1161019d578063d51dc3dc116100e9578063e7dc3188116100a2578063ecef55771161007c578063ecef55771461072e578063ee43eda114610741578063f2fde38b14610754578063f52f84e1146107675761030c565b8063e7dc3188146106f5578063e8f7ca3e14610708578063eb0125591461071b5761030c565b8063d51dc3dc14610676578063d981e77314610689578063de07a1731461069c578063def6a06f146106af578063e05a66e0146106c2578063e50e0ef7146106d55761030c565b8063b828204111610156578063bd1f0a6c11610130578063bd1f0a6c1461061d578063c3b6e7c214610630578063ccfc347e14610643578063cf5aed12146106565761030c565b8063b8282041146105c9578063ba4d2d28146105dc578063bc6a7d76146105fd5761030c565b80638da5cb5b14610548578063a17b75b51461055d578063b02ca0c014610570578063b0b4888f14610583578063b3c45ebe146105a3578063b461dd4f146105b65761030c565b8063512872f41161025c5780636be39bda1161021557806372540003116101ef57806372540003146104ee57806375e86ae41461050f5780637d870dd414610522578063811322fb146105355761030c565b80636be39bda146104a65780636fe55baa146104c6578063715018a6146104e65761030c565b8063512872f4146104475780636031a0941461045a578063606aa07e1461046d578063636701c41461048057806367fe5d70146104935780636a899b9b1461046d5761030c565b80631b126815116102c95780633549d08d116102a35780633549d08d146103ee57806337462dba1461040157806339262e87146104145780633adc277a146104275761030c565b80631b126815146103a857806327258b22146103c857806328e0f8a9146103db5761030c565b806303a81a2a1461031157806309648a9d146103265780630c5b75a41461034f5780630d62037a1461036f578063135b9f4d146103825780631717e86714610395575b600080fd5b61032461031f366004613c26565b61077a565b005b610339610334366004613bf6565b61084f565b6040516103469190614e3e565b60405180910390f35b61036261035d366004613bf6565b610876565b60405161034691906145c4565b61032461037d366004613c26565b6108ed565b610362610390366004613c55565b610992565b6103246103a3366004613ca1565b610a31565b6103bb6103b6366004613ca1565b610ae7565b60405161034691906145a9565b6103bb6103d6366004613bf6565b610b64565b6103626103e9366004613bf6565b610b79565b6103246103fc366004613c26565b610b8e565b61033961040f366004613bf6565b610c69565b610324610422366004613ca1565b610c88565b61043a610435366004613bf6565b610d2d565b6040516103469190614565565b610324610455366004613c26565b610d47565b610324610468366004613c26565b610e0e565b61036261047b366004613c55565b610ee9565b61032461048e366004613d1b565b610f07565b6103246104a1366004613e02565b611016565b6104b96104b4366004613bf6565b6110dc565b6040516103469190614dd8565b6104d96104d4366004613c55565b61117a565b6040516103469190614e30565b610324611219565b6105016104fc366004613bf6565b611298565b604051610346929190614689565b61036261051d366004613bf6565b6112c1565b610324610530366004613e02565b611695565b610362610543366004613e26565b61174e565b61055061175c565b6040516103469190614537565b61036261056b366004613bf6565b61176b565b61036261057e366004613c55565b611780565b610596610591366004613c55565b6117a1565b6040516103469190614e22565b6105506105b1366004613bf6565b611840565b6103626105c4366004613c55565b61185f565b6103626105d7366004613bf6565b6118a5565b6105ef6105ea366004613c55565b611978565b6040516103469291906145b4565b61061061060b366004613c55565b6119a2565b6040516103469190614e14565b61032461062b366004613c26565b611a41565b61036261063e366004613bf6565b611ad9565b6103bb610651366004613ba2565b611cd6565b610669610664366004613c55565b611ceb565b6040516103469190614f23565b610362610684366004613c55565b611d09565b610324610697366004613c55565b611d4f565b6103246106aa366004613c76565b611dbe565b6103246106bd366004613cee565b611e5a565b6103626106d0366004613e42565b611f5a565b6106e86106e3366004613bf6565b611f78565b6040516103469190614b90565b610324610703366004613ba2565b611fd6565b6103bb610716366004613c26565b61202f565b610550610729366004613c55565b612065565b61066961073c366004613c55565b6120fb565b61055061074f366004613bf6565b61218f565b610324610762366004613ba2565b6121af565b610362610775366004613bf6565b612265565b6000828152600160208190526040909120015482906001600160a01b03163314806107b757506107b7816000356001600160e01b03191633610ae7565b6107dc5760405162461bcd60e51b81526004016107d390614802565b60405180910390fd5b6000838152600160208190526040918290200180546001600160a01b038581166001600160a01b0319831617909255915191169084907f6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a2090610841908490879061454b565b60405180910390a250505050565b6108576137f2565b600082815260016020526040902061086e9061227a565b90505b919050565b60008181526001602081905260408220015482906001600160a01b03163314806108b257506108b2816000356001600160e01b03191633610ae7565b6108ce5760405162461bcd60e51b81526004016107d390614802565b6000838152600160205260408120600601805491905591505b50919050565b610904826000356001600160e01b03191633610ae7565b6109205760405162461bcd60e51b81526004016107d390614ad4565b6000828152600160205260409081902060070180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e2590610985908590849086906145cd565b60405180910390a1505050565b6000828152600160205260408082209051632b34c55f60e01b815273__CEGEncoder____________________________91632b34c55f916109d891908690600401614bcb565b60206040518083038186803b1580156109f057600080fd5b505af4158015610a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613c0e565b90505b92915050565b610a48836000356001600160e01b03191633610ae7565b610a645760405162461bcd60e51b81526004016107d390614a85565b60008381526001602081815260408084206001600160e01b031987168552600c0182528084206001600160a01b038616808652925292839020805460ff1916909217909155905184907face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb4786590610ada908690614674565b60405180910390a3505050565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516845290915281205460ff1680610b5a57506000848152600160209081526040808320838052600c0182528083206001600160a01b038616845290915290205460ff165b90505b9392505050565b60009081526001602052604090205460ff1690565b60009081526001602052604090206005015490565b6000828152600160205260409020600a01546001600160a01b031680610bc65760405162461bcd60e51b81526004016107d3906146a5565b336001600160a01b0382161480610bef5750610bef836000356001600160e01b03191633610ae7565b610c0b5760405162461bcd60e51b81526004016107d390614702565b60008381526001602052604090819020600a0180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce90610985908590849086906145cd565b610c716137f2565b600082815260016020526040902061086e90612572565b610c9f836000356001600160e01b03191633610ae7565b610cbb5760405162461bcd60e51b81526004016107d390614a85565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516808552925291829020805460ff19169055905184907f42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa90610ada908690614674565b600081815260016020526040902060609061086e90612894565b6000828152600160208190526040909120015482906001600160a01b0316331480610d845750610d84816000356001600160e01b03191633610ae7565b610da05760405162461bcd60e51b81526004016107d390614802565b6000838152600160205260409081902080546001600160a01b03858116610100908102610100600160a81b03198416179093559251919004919091169084907fdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb90610841908490879061454b565b6000828152600160205260409020600801546001600160a01b031680610e465760405162461bcd60e51b81526004016107d390614a28565b336001600160a01b0382161480610e6f5750610e6f836000356001600160e01b03191633610ae7565b610e8b5760405162461bcd60e51b81526004016107d3906148f0565b6000838152600160205260409081902060080180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce90610985908590849086906145cd565b6000828152600160205260408120610a28908363ffffffff61292a16565b3360009081526002602052604090205460ff16610f365760405162461bcd60e51b81526004016107d39061489c565b610f9489610f49368a90038a018a6140d5565b888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610f8c9250505036899003890189613e6d565b878787612940565b600089815260016020526040908190209051630c41805d60e11b815273__CEGEncoder____________________________9163188300ba91610fdb91908c90600401614bd9565b60006040518083038186803b158015610ff357600080fd5b505af4158015611007573d6000803e3d6000fd5b50505050505050505050505050565b6000828152600160208190526040909120015482906001600160a01b03163314806110535750611053816000356001600160e01b03191633610ae7565b61106f5760405162461bcd60e51b81526004016107d390614802565b61109b611081368490038401846140d5565b60008581526001602052604090209063ffffffff612ac516565b827f0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f83602001356040516110cf91906145c4565b60405180910390a2505050565b6110e461388c565b60008281526001602052604090819020905163197bc8e960e21b815273__CEGEncoder____________________________916365ef23a49161112991906004016145c4565b6104e06040518083038186803b15801561114257600080fd5b505af4158015611156573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e9190613ed5565b61118261397f565b60008381526001602052604090819020905163bf5f9be360e01b815273__CEGEncoder____________________________9163bf5f9be3916111c991908690600401614bcb565b60606040518083038186803b1580156111e157600080fd5b505af41580156111f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2891906140ba565b611221612df3565b6000546001600160a01b0390811691161461124e5760405162461bcd60e51b81526004016107d390614996565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c8111156112ac57fe5b92505067ffffffffffffffff83169050915091565b60006112cb6139a2565b6112eb8372636f6e74726163745265666572656e63655f3160681b6119a2565b80519091501580159061130d575060038160600151600481111561130b57fe5b145b1561168c5780516020820151604051631392c59160e11b81526001600160a01b038216906327258b22906113459085906004016145c4565b60206040518083038186803b15801561135d57600080fd5b505afa158015611371573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113959190613bda565b6113b15760405162461bcd60e51b81526004016107d390614b28565b60006113cc866b65786572636973654461746560a01b610ee9565b905060006113f3877518dc99591a5d115d995b9d151e5c1950dbdd995c995960521b6120fb565b60ff16600581111561140157fe5b90506000836001600160a01b031663cf5aed12866040518263ffffffff1660e01b8152600401611431919061464f565b60206040518083038186803b15801561144957600080fd5b505afa15801561145d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148191906141d2565b60ff16600581111561148f57fe5b90506000846001600160a01b031663606aa07e876040518263ffffffff1660e01b81526004016114bf919061462c565b60206040518083038186803b1580156114d757600080fd5b505afa1580156114eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150f9190613c0e565b9050831561153057611522601b42611f5a565b975050505050505050610871565b600083600581111561153e57fe5b14158015611561575082600581111561155357fe5b82600581111561155f57fe5b145b1561168557600182600581111561157457fe5b141561158557611522601a82611f5a565b600282600581111561159357fe5b141561163d576115a161397f565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906115cd908a906004016145ec565b60606040518083038186803b1580156115e557600080fd5b505afa1580156115f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161d91906140ba565b905061162e601a6106d08385612df7565b98505050505050505050610871565b600382600581111561164b57fe5b14156116855761165961397f565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906115cd908a90600401614609565b5050505050505b50600092915050565b6000828152600160208190526040909120015482906001600160a01b03163314806116d257506116d2816000356001600160e01b03191633610ae7565b6116ee5760405162461bcd60e51b81526004016107d390614802565b61171a611700368490038401846140d5565b60008581526001602052604090209063ffffffff612f2316565b827fad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec683602001356040516110cf91906145c4565b600081601c81111561086e57fe5b6000546001600160a01b031690565b60009081526001602052604090206004015490565b60009182526001602090815260408084209284526003909201905290205490565b6117a96139c9565b6000838152600160205260409081902090516319cb3fdf60e31b815273__CEGEncoder____________________________9163ce59fef8916117f091908690600401614bcb565b60806040518083038186803b15801561180857600080fd5b505af415801561181c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a28919061409f565b600090815260016020819052604090912001546001600160a01b031690565b6000828152600160205260408082209051631b00116b60e11b815273__CEGEncoder____________________________9163360022d6916109d891908690600401614bcb565b6000818152600160205260408120816118bd84613219565b600583015460009081526003840160205260409020546004840154919250901580156118e7575081155b156118f9575060009250610871915050565b60008061190584611298565b9150915060008061191585611298565b9150915080600014806119315750821580159061193157508083105b8061195557508083148015611955575061194a8261174e565b6119538561174e565b105b156119695785975050505050505050610871565b84975050505050505050610871565b6000918252600160208181526040808520938552600f90930190529120805491015460ff90911691565b6119aa6139a2565b6000838152600160205260409081902090516326af533960e21b815273__CEGEncoder____________________________91639abd4ce4916119f191908690600401614bcb565b60806040518083038186803b158015611a0957600080fd5b505af4158015611a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190614084565b611a58826000356001600160e01b03191633610ae7565b611a745760405162461bcd60e51b81526004016107d3906147a5565b6000828152600160205260409081902060090180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e2590610985908590849086906145cd565b60008181526001602081905260408220015482906001600160a01b0316331480611b155750611b15816000356001600160e01b03191633610ae7565b611b315760405162461bcd60e51b81526004016107d390614802565b600083815260016020526040812090611b4985613219565b60058301546000908152600384016020526040902054600484015491925090158015611b73575081155b15611b855750600093506108e7915050565b600080611b9184611298565b91509150600080611ba185611298565b9150915084861415611c16578260028801600086601c811115611bc057fe5b601c811115611bcb57fe5b8152602081019190915260400160002055600487015460058801541415611bfd5750600097506108e795505050505050565b5050506005909301805460010190555092506108e79050565b801580611c2c57508215801590611c2c57508083105b80611c5057508083148015611c505750611c458261174e565b611c4e8561174e565b105b15611c93578260028801600086601c811115611c6857fe5b601c811115611c7357fe5b8152602081019190915260400160002055509396506108e7945050505050565b801580611ca7575060048701546005880154145b15611cbd5750600097506108e795505050505050565b50505060059093018054600101905593506108e7915050565b60026020526000908152604090205460ff1681565b6000828152600160205260408120610a28908363ffffffff6133bb16565b600082815260016020526040808220905163af08bc9560e01b815273__CEGEncoder____________________________9163af08bc95916109d891908690600401614bcb565b6000828152600160208190526040909120015482906001600160a01b0316331480611d8c5750611d8c816000356001600160e01b03191633610ae7565b611da85760405162461bcd60e51b81526004016107d390614802565b5060009182526001602052604090912060060155565b6000838152600160208190526040909120015483906001600160a01b0316331480611dfb5750611dfb816000356001600160e01b03191633610ae7565b611e175760405162461bcd60e51b81526004016107d390614802565b50604080518082018252600180825260208083019485526000968752818152838720958752600f90950190945293209251835460ff191690151517835551910155565b6000828152600160208190526040909120015482906001600160a01b0316331480611e975750611e97816000356001600160e01b03191633610ae7565b611eb35760405162461bcd60e51b81526004016107d390614802565b600083815260016020526040908190209051630c41805d60e11b815273__CEGEncoder____________________________9163188300ba91611efa91908690600401614bd9565b60006040518083038186803b158015611f1257600080fd5b505af4158015611f26573d6000803e3d6000fd5b50506040518592507fb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb9150600090a2505050565b60008160f884601c811115611f6b57fe5b60ff16901b179392505050565b611f806139ea565b50600090815260016020908152604091829020825160808101845260078201546001600160a01b03908116825260088301548116938201939093526009820154831693810193909352600a015416606082015290565b611fde612df3565b6000546001600160a01b0390811691161461200b5760405162461bcd60e51b81526004016107d390614996565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000918252600160209081526040808420848052600c0182528084206001600160a01b0393909316845291905290205460ff1690565b6000828152600160205260408082209051636749043d60e01b815273__CEGEncoder____________________________91636749043d916120ab91908690600401614bcb565b60206040518083038186803b1580156120c357600080fd5b505af41580156120d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613bbe565b600082815260016020526040808220905162908ced60e01b815273__CEGEncoder____________________________9162908ced9161213f91908690600401614bcb565b60206040518083038186803b15801561215757600080fd5b505af415801561216b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2891906141d2565b60009081526001602052604090205461010090046001600160a01b031690565b6121b7612df3565b6000546001600160a01b039081169116146121e45760405162461bcd60e51b81526004016107d390614996565b6001600160a01b03811661220a5760405162461bcd60e51b81526004016107d39061475f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526001602052604090206006015490565b6122826137f2565b604080516102808101825272636f6e7472616374506572666f726d616e636560681b6000908152600e85016020529190912054819060f81c60058111156122c557fe5b60058111156122d057fe5b8152697374617475734461746560b01b6000908152600e8501602081815260408084205482860152706e6f6e506572666f726d696e674461746560781b845282825280842054818601526b6d617475726974794461746560a01b84528282528084205460608601526b65786572636973654461746560a01b84528282528084205460808601526e7465726d696e6174696f6e4461746560881b84528282528084205460a08601526c6c617374436f75706f6e44617960981b84528282528084205460c0860152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b84528282528084205460e08601526e1858d8dc9d5959125b9d195c995cdd608a1b845282825280842054610100860152691999595058d8dc9d595960b21b845282825280842054610120860152726e6f6d696e616c496e7465726573745261746560681b8452828252808420546101408601527834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b845282825280842054610160860152783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b8452828252808420546101808601527f6e6578745072696e636970616c526564656d7074696f6e5061796d656e7400008452828252808420546101a08601526d195e195c98da5cd9505b5bdd5b9d60921b8452828252808420546101c08601526f65786572636973655175616e7469747960801b8452828252808420546101e0860152677175616e7469747960c01b8452828252808420546102008601527018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b8452828252808420546102208601526b36b0b933b4b72330b1ba37b960a11b8452828252808420546102408601526f30b2353ab9ba36b2b73a2330b1ba37b960811b8452919052902054610260909101529050919050565b61257a6137f2565b604080516102808101825274465f636f6e7472616374506572666f726d616e636560581b6000908152600e85016020529190912054819060f81c60058111156125bf57fe5b60058111156125ca57fe5b81526b465f7374617475734461746560a01b6000908152600e850160208181526040808420548286015272465f6e6f6e506572666f726d696e674461746560681b845282825280842054818601526d465f6d617475726974794461746560901b84528282528084205460608601526d465f65786572636973654461746560901b845282825280842054608086015270465f7465726d696e6174696f6e4461746560781b84528282528084205460a08601526e465f6c617374436f75706f6e44617960881b84528282528084205460c0860152721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b84528282528084205460e0860152701197d858d8dc9d5959125b9d195c995cdd607a1b8452828252808420546101008601526b1197d999595058d8dc9d595960a21b84528282528084205461012086015274465f6e6f6d696e616c496e7465726573745261746560581b8452828252808420546101408601527f465f696e7465726573745363616c696e674d756c7469706c69657200000000008452828252808420546101608601527f465f6e6f74696f6e616c5363616c696e674d756c7469706c69657200000000008452828252808420546101808601527f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e748452828252808420546101a08601526f1197d95e195c98da5cd9505b5bdd5b9d60821b8452828252808420546101c086015271465f65786572636973655175616e7469747960701b8452828252808420546101e086015269465f7175616e7469747960b01b845282825280842054610200860152721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b8452828252808420546102208601526d232fb6b0b933b4b72330b1ba37b960911b84528282528084205461024086015271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b8452919052902054610260909101529050919050565b606080826002016002015467ffffffffffffffff811180156128b557600080fd5b506040519080825280602002602001820160405280156128df578160200160208202803683370190505b50905060005b6004840154811015612923576000818152600385016020526040902054825183908390811061291057fe5b60209081029190910101526001016128e5565b5092915050565b6000908152600e91909101602052604090205490565b6000878152600160205260409020805460ff16156129705760405162461bcd60e51b81526004016107d390614851565b6001600160a01b03831660009081526002602052604090205460ff1615156001146129ad5760405162461bcd60e51b81526004016107d39061494d565b805485516007830180546001600160a01b03199081166001600160a01b039384161790915560208801516008850180548316918416919091179055604088015160098501805483169184169190911790556060880151600a85018054831691841691909117905560ff199092166001908117610100600160a81b0319166101008884160217845583018054909216908516179055612a4b8188612f23565b612a5b818863ffffffff612ac516565b612a6b818763ffffffff61346716565b6001600160a01b03821615612a8457612a8488836134d4565b7f5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd8964688604051612ab391906145c4565b60405180910390a15050505050505050565b612afe8274465f636f6e7472616374506572666f726d616e636560581b60f884600001516005811115612af457fe5b60ff16901b61354b565b612b1f826b465f7374617475734461746560a01b836020015160001b61354b565b612b478272465f6e6f6e506572666f726d696e674461746560681b836040015160001b61354b565b612b6a826d465f6d617475726974794461746560901b836060015160001b61354b565b612b8d826d465f65786572636973654461746560901b836080015160001b61354b565b612bb38270465f7465726d696e6174696f6e4461746560781b8360a0015160001b61354b565b612bdb82721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b8360e0015160001b61354b565b612c0282701197d858d8dc9d5959125b9d195c995cdd607a1b83610100015160001b61354b565b612c24826b1197d999595058d8dc9d595960a21b83610120015160001b61354b565b612c4f8274465f6e6f6d696e616c496e7465726573745261746560581b83610140015160001b61354b565b612c82827f465f696e7465726573745363616c696e674d756c7469706c696572000000000083610160015160001b61354b565b612cb5827f465f6e6f74696f6e616c5363616c696e674d756c7469706c696572000000000083610180015160001b61354b565b612ce8827f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e74836101a0015160001b61354b565b612d0e826f1197d95e195c98da5cd9505b5bdd5b9d60821b836101c0015160001b61354b565b612d368271465f65786572636973655175616e7469747960701b836101e0015160001b61354b565b612d568269465f7175616e7469747960b01b83610200015160001b61354b565b612d7f82721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b83610220015160001b61354b565b612da3826d232fb6b0b933b4b72330b1ba37b960911b83610240015160001b61354b565b612dcb8271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b83610260015160001b61354b565b612def826e465f6c617374436f75706f6e44617960881b8360c0015160001b61354b565b5050565b3390565b6000808084602001516005811115612e0b57fe5b1415612e2b578351612e2490849063ffffffff61357d16565b9050610a28565b600184602001516005811115612e3d57fe5b1415612e59578351612e2490849060070263ffffffff61357d16565b600284602001516005811115612e6b57fe5b1415612e84578351612e2490849063ffffffff61359216565b600384602001516005811115612e9657fe5b1415612eb2578351612e2490849060030263ffffffff61359216565b600484602001516005811115612ec457fe5b1415612ee0578351612e2490849060060263ffffffff61359216565b600584602001516005811115612ef257fe5b1415612f0b578351612e2490849063ffffffff61360e16565b60405162461bcd60e51b81526004016107d3906149cb565b612f508272636f6e7472616374506572666f726d616e636560681b60f884600001516005811115612af457fe5b612f6f82697374617475734461746560b01b836020015160001b61354b565b612f9582706e6f6e506572666f726d696e674461746560781b836040015160001b61354b565b612fb6826b6d617475726974794461746560a01b836060015160001b61354b565b612fd7826b65786572636973654461746560a01b836080015160001b61354b565b612ffb826e7465726d696e6174696f6e4461746560881b8360a0015160001b61354b565b61302182701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b8360e0015160001b61354b565b613046826e1858d8dc9d5959125b9d195c995cdd608a1b83610100015160001b61354b565b61306682691999595058d8dc9d595960b21b83610120015160001b61354b565b61308f82726e6f6d696e616c496e7465726573745261746560681b83610140015160001b61354b565b6130be827834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b83610160015160001b61354b565b6130ed82783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b83610180015160001b61354b565b613120827f6e6578745072696e636970616c526564656d7074696f6e5061796d656e740000836101a0015160001b61354b565b613144826d195e195c98da5cd9505b5bdd5b9d60921b836101c0015160001b61354b565b61316a826f65786572636973655175616e7469747960801b836101e0015160001b61354b565b61318882677175616e7469747960c01b83610200015160001b61354b565b6131af827018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b83610220015160001b61354b565b6131d1826b36b0b933b4b72330b1ba37b960a11b83610240015160001b61354b565b6131f7826f30b2353ab9ba36b2b73a2330b1ba37b960811b83610260015160001b61354b565b612def826c6c617374436f75706f6e44617960981b8360c0015160001b61354b565b600081815260016020526040812061322f61388c565b60405163197bc8e960e21b815273__CEGEncoder____________________________906365ef23a4906132669085906004016145c4565b6104e06040518083038186803b15801561327f57600080fd5b505af4158015613293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132b79190613ed5565b82549091506000908190819081906133639061010090046001600160a01b031663b90f73688760028a0185600381526020019081526020016000205460036040518463ffffffff1660e01b815260040161331393929190614de7565b60206040518083038186803b15801561332b57600080fd5b505afa15801561333f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc9190613c0e565b91509150826000148061337557508281105b8061339957508083148015613399575061338e8461174e565b6133978361174e565b105b156133a5578092508193505b50506133b18282611f5a565b9695505050505050565b600072636f6e7472616374506572666f726d616e636560681b82141561340c575072636f6e7472616374506572666f726d616e636560681b6000908152600e8301602052604090205460f81c610a2b565b74465f636f6e7472616374506572666f726d616e636560581b82141561345f575074465f636f6e7472616374506572666f726d616e636560581b6000908152600e8301602052604090205460f81c610a2b565b506000610a2b565b60005b81518110156134cf576000801b82828151811061348357fe5b60200260200101511415613496576134cf565b8181815181106134a257fe5b6020908102919091018101516000838152600386019092526040909120556001016004830181905561346a565b505050565b6000828152600160208181526040808420848052600c0182528084206001600160a01b0386168086529252808420805460ff19169093179092559051909184917face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb478659161353f91614674565b60405180910390a35050565b6000828152600e84016020526040902054811415613568576134cf565b6000918252600e929092016020526040902055565b620151808102820182811015610a2b57600080fd5b60008080806135a662015180875b04613635565b600c9188016000198101838104949094019650945092509006600101915060006135d084846136cb565b9050808211156135de578091505b620151808706620151806135f3868686613751565b020194508685101561360457600080fd5b5050505092915050565b600080808061362062015180876135a0565b91870194509250905060006135d084846136cb565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f846050028161368c57fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b600081600114806136dc5750816003145b806136e75750816005145b806136f25750816007145b806136fd5750816008145b80613708575081600a145b80613713575081600c145b156137205750601f610a2b565b816002146137305750601e610a2b565b613739836137cd565b61374457601c613747565b601d5b60ff169392505050565b60006107b284101561376257600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f028161379e57fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b6000600482061580156137e257506064820615155b8061086e57505061019090061590565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610340810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200161394661397f565b815260200161395361397f565b81526020016139606139c9565b815260200161396d6139a2565b815260200161397a6139a2565b905290565b6040805160608101909152600080825260208201905b8152600060209091015290565b6040805160808101825260008082526020820181905290918201908152602001600061397a565b60408051608081019091526000808252602082019081526020016000613995565b60408051608081018252600080825260208201819052918101829052606081019190915290565b8035610a2b81614fc5565b8051610a2b81614fc5565b8051610a2b81614fe8565b8051610a2b81614ff5565b8035610a2b81615002565b8051610a2b81615002565b8051610a2b8161501c565b8035610a2b81615029565b8051610a2b81615029565b6000608082840312156108e7578081fd5b60006104e082840312156108e7578081fd5b600060808284031215613aa8578081fd5b613ab26080614f31565b905081518152602082015160208201526040820151613ad08161500f565b60408201526060820151613ae38161500f565b606082015292915050565b600060808284031215613aff578081fd5b613b096080614f31565b9050815181526020820151613b1d81615002565b60208201526040820151613b3081614ff5565b60408201526060820151613ae381614fda565b600060608284031215613b54578081fd5b613b5e6060614f31565b9050815181526020820151613b7281615002565b60208201526040820151613b8581614fda565b604082015292915050565b600061028082840312156108e7578081fd5b600060208284031215613bb3578081fd5b8135610a2881614fc5565b600060208284031215613bcf578081fd5b8151610a2881614fc5565b600060208284031215613beb578081fd5b8151610a2881614fda565b600060208284031215613c07578081fd5b5035919050565b600060208284031215613c1f578081fd5b5051919050565b60008060408385031215613c38578081fd5b823591506020830135613c4a81614fc5565b809150509250929050565b60008060408385031215613c67578182fd5b50508035926020909101359150565b600080600060608486031215613c8a578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215613cb5578081fd5b8335925060208401356001600160e01b031981168114613cd3578182fd5b91506040840135613ce381614fc5565b809150509250925092565b6000806105008385031215613d01578182fd5b82359150613d128460208501613a85565b90509250929050565b60008060008060008060008060006108808a8c031215613d39578687fd5b89359850613d4a8b60208c01613a85565b9750613d5a8b6105008c01613b90565b96506107808a013567ffffffffffffffff80821115613d77578687fd5b818c018d601f820112613d88578788fd5b8035925081831115613d98578788fd5b8d60208085028301011115613dab578788fd5b6020019750909550613dc390508b6107a08c01613a74565b9350613dd38b6108208c01613a11565b9250613de38b6108408c01613a11565b9150613df38b6108608c01613a11565b90509295985092959850929598565b6000806102a08385031215613e15578182fd5b82359150613d128460208501613b90565b600060208284031215613e37578081fd5b8135610a2881615036565b60008060408385031215613e54578182fd5b8235613e5f81615036565b946020939093013593505050565b600060808284031215613e7e578081fd5b613e886080614f31565b8235613e9381614fc5565b81526020830135613ea381614fc5565b60208201526040830135613eb681614fc5565b60408201526060830135613ec981614fc5565b60608201529392505050565b60006104e08284031215613ee7578081fd5b613ef2610340614f31565b613efc8484613a69565b8152613f0b8460208501613a32565b6020820152613f1d8460408501613a53565b6040820152613f2f8460608501613a48565b6060820152613f418460808501613a27565b6080820152613f538460a08501613a32565b60a0820152613f658460c08501613a32565b60c0820152613f778460e08501613a48565b60e0820152610100613f8b85828601613a1c565b90820152610120613f9e85858301613a1c565b908201526101408381015190820152610160808401519082015261018080840151908201526101a080840151908201526101c080840151908201526101e08084015190820152610200808401519082015261022080840151908201526102408084015190820152610260808401519082015261028080840151908201526102a061402a85828601613b43565b9082015261030061403d85858301613b43565b6102c0830152614051856103608601613aee565b6102e0830152614065856103e08601613a97565b90820152614077846104608501613a97565b6103208201529392505050565b600060808284031215614095578081fd5b610a288383613a97565b6000608082840312156140b0578081fd5b610a288383613aee565b6000606082840312156140cb578081fd5b610a288383613b43565b60006102808083850312156140e8578182fd5b6140f181614f31565b6140fb8585613a3d565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b6000602082840312156141e3578081fd5b815160ff81168114610a28578182fd5b6001600160a01b03169052565b6009811061420a57fe5b9052565b61420a81614fa4565b61420a81614fb1565b600d811061420a57fe5b6013811061420a57fe5b61423f82825161422a565b6020810151614251602084018261420e565b5060408101516142646040840182614220565b5060608101516142776060840182614217565b50608081015161428a6080840182614200565b5060a081015161429d60a084018261420e565b5060c08101516142b060c084018261420e565b5060e08101516142c360e0840182614217565b50610100808201516142d7828501826141f3565b5050610120808201516142ec828501826141f3565b50506101408181015190830152610160808201519083015261018080820151908301526101a080820151908301526101c080820151908301526101e08082015190830152610200808201519083015261022080820151908301526102408082015190830152610260808201519083015261028080820151908301526102a08082015161437a82850182614513565b50506102c081015161030061439181850183614513565b6102e083015191506143a76103608501836144a1565b82015190506143ba6103e084018261441b565b506103208101516134cf61046084018261441b565b803582526020810135602083015260408101356143eb8161500f565b6143f481614fbb565b604083015260608101356144078161500f565b61441081614fbb565b806060840152505050565b8051825260208101516020830152604081015161443781614fbb565b6040830152606081015161441081614fbb565b80358252602081013561445c81615002565b61446581614fb1565b6020830152604081013561447881614ff5565b61448181614fa4565b6040830152606081013561449481614fda565b8015156060840152505050565b8051825260208101516144b381614fb1565b602083015260408101516144c681614fa4565b60408301526060908101511515910152565b8035825260208101356144ea81615002565b6144f381614fb1565b6020830152604081013561450681614fda565b8015156040840152505050565b80518252602081015161452581614fb1565b60208301526040908101511515910152565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561459d57835183529284019291840191600101614581565b50909695505050505050565b901515815260200190565b9115158252602082015260400190565b90815260200190565b9283526001600160a01b03918216602084015216604082015260600190565b9081526a19dc9858d954195c9a5bd960aa1b602082015260400190565b9081527019195b1a5b9c5d595b98de54195c9a5bd9607a1b602082015260400190565b908152706e6f6e506572666f726d696e674461746560781b602082015260400190565b90815272636f6e7472616374506572666f726d616e636560681b602082015260400190565b6001600160e01b031991909116815260200190565b6040810161469684614f99565b82528260208301529392505050565b6020808252603e908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20454e5452595f444f45535f4e4f545f45584953540000606082015260800190565b6020808252603d908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20554e415554484f52495a45445f53454e444552000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526039908201527f417373657452656769737472792e736574436f756e74657270617274794f626c60408201527f69676f723a20554e415554484f52495a45445f53454e44455200000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e6973417574686f72697a65643a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b6020808252602b908201527f4261736552656769737472792e73657441737365743a2041535345545f414c5260408201526a454144595f45584953545360a81b606082015260800190565b60208082526034908201527f4261736552656769737472792e6f6e6c79417070726f7665644163746f72733a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526038908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20554e415554484f52495a45445f53454e4445520000000000000000606082015260800190565b60208082526029908201527f4261736552656769737472792e73657441737365743a204143544f525f4e4f5460408201526817d054141493d5915160ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526039908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20454e5452595f444f45535f4e4f545f455849535400000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e7265766f6b654163636573733a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b60208082526034908201527f417373657452656769737472792e73657443726561746f724f626c69676f723a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526042908201527f41737365744163746f722e6765744e657874556e6465726c79696e674576656e60408201527f743a20554e4445524c59494e475f41535345545f444f45535f4e4f545f45584960608201526114d560f21b608082015260a00190565b81516001600160a01b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b918252602082015260400190565b8281526105008101602083810190614bfc908401614bf78387613a5e565b61422a565b614c068185614f72565b614c13604085018261420e565b5050614c226040840184614f8c565b614c2f6060840182614220565b50614c3d6060840184614f7f565b614c4a6080840182614217565b50614c586080840184614f65565b614c6560a0840182614200565b50614c7360a0840184614f72565b614c8060c084018261420e565b50614c8e60c0840184614f72565b614c9b60e084018261420e565b50614ca960e0840184614f7f565b610100614cb881850183614217565b614cc481860186614f58565b915050610120614cd6818501836141f3565b614ce281860186614f58565b915050610140614cf4818501836141f3565b610160915080850135828501525061018081850135818501526101a091508085013582850152506101c081850135818501526101e09150808501358285015250610200818501358185015261022091508085013582850152506102408185013581850152610260915080850135828501525061028081850135818501526102a09150808501358285015250614d8f6102c084018286016144d8565b50614da2610320830161030085016144d8565b614db46103808301610360850161444a565b614dc661040083016103e085016143cf565b610b5d610480830161046085016143cf565b6104e08101610a2b8284614234565b6105208101614df68286614234565b836104e0830152614e0683614f99565b610500830152949350505050565b60808101610a2b828461441b565b60808101610a2b82846144a1565b60608101610a2b8284614513565b600061028082019050614e52828451614217565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715614f5057600080fd5b604052919050565b60008235610a2881614fc5565b60008235610a2881614fe8565b60008235610a2881614ff5565b60008235610a2881615002565b60008235610a288161501c565b80601d811061087157fe5b60028110614fae57fe5b50565b60068110614fae57fe5b60058110614fae57fe5b6001600160a01b0381168114614fae57600080fd5b8015158114614fae57600080fd5b60098110614fae57600080fd5b60028110614fae57600080fd5b60068110614fae57600080fd5b60058110614fae57600080fd5b600d8110614fae57600080fd5b60138110614fae57600080fd5b601d8110614fae57600080fdfea26469706673582212204fd03df05009af18600025bd2ad18913ac61a60061d4641cefec98c5772daac564736f6c634300060b0033",
  "immutableReferences": {},
  "sourceMap": "388:5174:36:-:0;;;484:58;;;;;;;;;-1:-1:-1;865:17:116;885:12;-1:-1:-1;;;;;885:10:116;:12;:::i;:::-;907:6;:18;;-1:-1:-1;;;;;;907:18:116;-1:-1:-1;;;;;907:18:116;;;;;;;940:43;;907:18;;-1:-1:-1;907:18:116;940:43;;907:6;;940:43;831:159;388:5174:36;;768:104:115;855:10;768:104;:::o;388:5174:36:-;;;;;;;",
  "deployedSourceMap": "388:5174:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5134:271:8;;;;;;:::i;:::-;;:::i;:::-;;615:176:19;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2354:304:16;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3033:494:13:-;;;;;;:::i;:::-;;:::i;3030:271:36:-;;;;;;:::i;:::-;;:::i;1194:397:6:-;;;;;;:::i;:::-;;:::i;2741:280::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1681:158:8:-;;;;;;:::i;:::-;;:::i;2834:190:16:-;;;;;;:::i;:::-;;:::i;1924:805:13:-;;;;;;:::i;:::-;;:::i;931:194:19:-;;;;;;:::i;:::-;;:::i;1970:399:6:-;;;;;;:::i;:::-;;:::i;1767:186:16:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4660:280:8:-;;;;;;:::i;:::-;;:::i;844:745:13:-;;;;;;:::i;:::-;;:::i;1619:242:19:-;;;;;;:::i;:::-;;:::i;987:469:36:-;;;;;;:::i;:::-;;:::i;2566:264:19:-;;;;;;:::i;:::-;;:::i;1596:182:36:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3581:277::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1689:145:116:-;;;:::i;487:293:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;3183:3322:16:-;;;;;;:::i;:::-;;:::i;2090:237:19:-;;;;;;:::i;:::-;;:::i;956:145:82:-;;;;;;:::i;:::-;;:::i;1066:77:116:-;;;:::i;:::-;;;;;;;:::i;1332:176:16:-;;;;;;:::i;:::-;;:::i;971:196::-;;;;;;:::i;:::-;;:::i;3864:276:36:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4264:157:8:-;;;;;;:::i;:::-;;:::i;3307:268:36:-;;;;;;:::i;:::-;;:::i;6636:1153:16:-;;;;;;:::i;:::-;;:::i;10335:286::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;4146:311:36:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3851:539:13:-;;;;;;:::i;:::-;;:::i;8059:2064:16:-;;;;;;:::i;:::-;;:::i;895:46:8:-;;;;;;:::i;:::-;;:::i;1131:237:19:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2747:277:36:-;;;;;;:::i;:::-;;:::i;2145:203:16:-;;;;;;:::i;:::-;;:::i;10833:248::-;;;;;;:::i;:::-;;:::i;1961:225:36:-;;;;;;:::i;:::-;;:::i;234:247:82:-;;;;;;:::i;:::-;;:::i;4599:179:13:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1411:101:8:-;;;;;;:::i;:::-;;:::i;3276:186:6:-;;;;;;:::i;:::-;;:::i;2464:277:36:-;;;;;;:::i;:::-;;:::i;2192:266::-;;;;;;:::i;:::-;;:::i;3904:159:8:-;;;;;;:::i;:::-;;:::i;1983:240:116:-;;;;;;:::i;:::-;;:::i;1959:180:16:-;;;;;;:::i;:::-;;:::i;5134:271:8:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;;;;;;;;;5263:17:8::1;5283:15:::0;;;:6:::1;:15;::::0;;;;;;;;:21:::1;::::0;;-1:-1:-1;;;;;5314:29:8;;::::1;-1:-1:-1::0;;;;;;5314:29:8;::::1;;::::0;;;5359:39;;5283:21;::::1;::::0;5290:7;;5359:39:::1;::::0;::::1;::::0;5283:21;;5338:5;;5359:39:::1;:::i;:::-;;;;;;;;811:1:6;5134:271:8::0;;;:::o;615:176:19:-;714:12;;:::i;:::-;749:15;;;;:6;:15;;;;;:35;;:33;:35::i;:::-;742:42;;615:176;;;;:::o;2354:304:16:-;2478:7;664:15:6;;;:6;:15;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;2501:20:16::1;2524:15:::0;;;:6:::1;:15;::::0;;;;:37;;;;2571:50;;;2524:37;-1:-1:-1;811:1:6::1;2354:304:16::0;;;;:::o;3033:494:13:-;3174:39;3184:7;3193;;-1:-1:-1;;;;;;3193:7:13;3202:10;3174:9;:39::i;:::-;3153:138;;;;-1:-1:-1;;;3153:138:13;;;;;;;:::i;:::-;3302:26;3331:15;;;:6;:15;;;;;;;:25;;:40;;-1:-1:-1;;;;;3382:60:13;;;-1:-1:-1;;;;;;3382:60:13;;;;;;3458:62;;3331:40;;;3458:62;;;;3338:7;;3331:40;;3425:17;;3458:62;:::i;:::-;;;;;;;;3033:494;;;:::o;3030:271:36:-;3198:7;3228:15;;;:6;:15;;;;;;:66;;-1:-1:-1;;;3228:66:36;;:55;;;;:66;;:15;3284:9;;3228:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3221:73;;3030:271;;;;;:::o;1194:397:6:-;1342:39;1352:7;1361;;-1:-1:-1;;;;;;1361:7:6;1370:10;1342:9;:39::i;:::-;1321:133;;;;-1:-1:-1;;;1321:133:6;;;;;;;:::i;:::-;1465:15;;;;1516:4;1465:15;;;;;;;;-1:-1:-1;;;;;;1465:39:6;;;;:22;;:39;;;;;-1:-1:-1;;;;;1465:48:6;;;;;;;;;;;:55;;-1:-1:-1;;1465:55:6;;;;;;;1536:48;;1472:7;;1536:48;;;;1488:15;;1536:48;:::i;:::-;;;;;;;;1194:397;;;:::o;2741:280::-;2867:4;2908:15;;;:6;:15;;;;;;;;-1:-1:-1;;;;;;2908:39:6;;;;:22;;:39;;;;;-1:-1:-1;;;;;2908:48:6;;;;;;;;;;;;;:96;;-1:-1:-1;2960:15:6;;;;:6;:15;;;;;;;;:35;;;:22;;:35;;;;;-1:-1:-1;;;;;2960:44:6;;;;;;;;;;;;2908:96;2887:127;;2741:280;;;;;;:::o;1681:158:8:-;1784:4;1811:15;;;:6;:15;;;;;:21;;;;1681:158::o;2834:190:16:-;2945:7;2975:15;;;:6;:15;;;;;:42;;;;2834:190::o;1924:805:13:-;2083:35;2121:15;;;:6;:15;;;;;:49;;;-1:-1:-1;;;;;2121:49:13;2202:41;2181:150;;;;-1:-1:-1;;;2181:150:13;;;;;;;:::i;:::-;2362:10;-1:-1:-1;;;;;2362:41:13;;;;:84;;;2407:39;2417:7;2426;;-1:-1:-1;;;;;;2426:7:13;2435:10;2407:9;:39::i;:::-;2341:192;;;;-1:-1:-1;;;2341:192:13;;;;;;;:::i;:::-;2544:15;;;;:6;:15;;;;;;;:49;;:78;;-1:-1:-1;;;;;;2544:78:13;-1:-1:-1;;;;;2544:78:13;;;;;2638:84;;;;;2544:15;;2666:27;;2544:78;;2638:84;:::i;931:194:19:-;1039:12;;:::i;:::-;1074:15;;;;:6;:15;;;;;:44;;:42;:44::i;1970:399:6:-;2119:39;2129:7;2138;;-1:-1:-1;;;;;;2138:7:6;2147:10;2119:9;:39::i;:::-;2098:133;;;;-1:-1:-1;;;2098:133:6;;;;;;;:::i;:::-;2293:5;2242:15;;;:6;:15;;;;;;;;-1:-1:-1;;;;;;2242:39:6;;;;:22;;:39;;;;;-1:-1:-1;;;;;2242:48:6;;;;;;;;;;;:56;;-1:-1:-1;;2242:56:6;;;2314:48;;2249:7;;2314:48;;;;2265:15;;2314:48;:::i;1767:186:16:-;1908:15;;;;:6;:15;;;;;1869:16;;1908:38;;:36;:38::i;4660:280:8:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;4791:18:8::1;4812:15:::0;;;:6:::1;:15;::::0;;;;;;:22;;-1:-1:-1;;;;;4844:31:8;;::::1;4812:22;4844:31:::0;;::::1;-1:-1:-1::0;;;;;;4844:31:8;::::1;;::::0;;;4891:42;;4812:22;;::::1;::::0;;;::::1;::::0;4819:7;;4891:42:::1;::::0;::::1;::::0;4812:22;;4869:6;;4891:42:::1;:::i;844:745:13:-:0;993:30;1026:15;;;:6;:15;;;;;:44;;;-1:-1:-1;;;;;1026:44:13;1102:36;1081:140;;;;-1:-1:-1;;;1081:140:13;;;;;;;:::i;:::-;1252:10;-1:-1:-1;;;;;1252:36:13;;;;:79;;;1292:39;1302:7;1311;;-1:-1:-1;;;;;;1311:7:13;1320:10;1292:9;:39::i;:::-;1231:182;;;;-1:-1:-1;;;1231:182:13;;;;;;;:::i;:::-;1424:15;;;;:6;:15;;;;;;;:44;;:68;;-1:-1:-1;;;;;;1424:68:13;-1:-1:-1;;;;;1424:68:13;;;;;1508:74;;;;;1424:15;;1536:22;;1424:68;;1508:74;:::i;1619:242:19:-;1756:7;1786:15;;;:6;:15;;;;;:68;;1844:9;1786:68;:57;:68;:::i;987:469:36:-;1023:10:8;1008:26;;;;:14;:26;;;;;;;;987:125;;;;-1:-1:-1;;;987:125:8;;;;;;;:::i;:::-;1329:67:36::1;1338:7:::0;1329:67:::1;;::::0;;::::1;::::0;::::1;1347:5:::0;1329:67:::1;:::i;:::-;1354:8;;1329:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;1329:67:36::1;::::0;-1:-1:-1;;;1329:67:36::1;::::0;;::::1;::::0;::::1;1364:9:::0;1329:67:::1;:::i;:::-;1375:6;1383:5;1390;1329:8;:67::i;:::-;1406:15;::::0;;;:6:::1;:15;::::0;;;;;;:43;;-1:-1:-1;;;1406:43:36;;:36:::1;::::0;::::1;::::0;:43:::1;::::0;:15;1443:5;;1406:43:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;987:469:::0;;;;;;;;;:::o;2566:264:19:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;2711:49:19::1;;;::::0;;::::1;::::0;::::1;2754:5:::0;2711:49:::1;:::i;:::-;:15;::::0;;;:6:::1;:15;::::0;;;;;:49:::1;:42;:49;:::i;:::-;2797:7;2775:48;2806:5;:16;;;2775:48;;;;;;:::i;:::-;;;;;;;;2566:264:::0;;;:::o;1596:182:36:-;1695:15;;:::i;:::-;1733;;;;:6;:15;;;;;;;:38;;-1:-1:-1;;;1733:38:36;;:36;;;;:38;;:15;:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3581:277::-;3751:9;;:::i;:::-;3783:15;;;;:6;:15;;;;;;;:68;;-1:-1:-1;;;3783:68:36;;:57;;;;:68;;:15;3841:9;;3783:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1689:145:116:-;1280:12;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:116;;;:22;;;1262:67;;;;-1:-1:-1;;;1262:67:116;;;;;;;:::i;:::-;1795:1:::1;1779:6:::0;;1758:40:::1;::::0;-1:-1:-1;;;;;1779:6:116;;::::1;::::0;1758:40:::1;::::0;1795:1;;1758:40:::1;1825:1;1808:19:::0;;-1:-1:-1;;;;;;1808:19:116::1;::::0;;1689:145::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;3183:3322:16:-;3296:7;3319:44;;:::i;:::-;3366:74;3409:7;-1:-1:-1;;;3366:42:16;:74::i;:::-;3481:26;;3319:121;;-1:-1:-1;3481:40:16;;;;:98;;-1:-1:-1;3553:26:16;3525:19;:24;;;:54;;;;;;;;;3481:98;3477:2994;;;3623:26;;3716:27;;;;3834:65;;-1:-1:-1;;;3834:65:16;;-1:-1:-1;;;;;3834:46:16;;;;;:65;;3623:26;;3834:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3809:190;;;;-1:-1:-1;;;3809:190:16;;;;;;;:::i;:::-;4014:20;4037:54;4067:7;-1:-1:-1;;;4037:29:16;:54::i;:::-;4014:77;;4105:42;4170:64;4200:7;-1:-1:-1;;;4170:29:16;:64::i;:::-;4150:85;;;;;;;;;;4105:130;;4249:49;4336:18;-1:-1:-1;;;;;4321:64:16;;4386:17;4321:106;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4301:127;;;;;;;;;;4249:179;;4442:35;4495:18;-1:-1:-1;;;;;4480:64:16;;4545:17;4480:104;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4442:142;-1:-1:-1;4659:16:16;;4655:258;;4749:149;4782:13;4865:15;4749:11;:149::i;:::-;4742:156;;;;;;;;;;;4655:258;5075:22;5049;:48;;;;;;;;;;:123;;;;;5150:22;5117:55;;;;;;;;:29;:55;;;;;;;;;5049:123;5028:1433;;;5349:22;5316:29;:55;;;;;;;;;5312:1135;;;5402:124;5439:12;5477:27;5402:11;:124::i;5312:1135::-;5588:22;5555:29;:55;;;;;;;;;5551:896;;;5634:31;;:::i;:::-;5668:100;;-1:-1:-1;;;5668:100:16;;-1:-1:-1;;;;;5668:66:16;;;;;:100;;5735:17;;5668:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5634:134;;5797:171;5834:12;5872:74;5895:21;5918:27;5872:22;:74::i;5797:171::-;5790:178;;;;;;;;;;;;5551:896;6030:22;5997:29;:55;;;;;;;;;5993:454;;;6076:37;;:::i;:::-;6116:106;;-1:-1:-1;;;6116:106:16;;-1:-1:-1;;;;;6116:66:16;;;;;:106;;6183:17;;6116:106;;;:::i;5993:454::-;3477:2994;;;;;;;-1:-1:-1;6496:1:16;;3183:3322;-1:-1:-1;;3183:3322:16:o;2090:237:19:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;2226:40:19::1;;;::::0;;::::1;::::0;::::1;2260:5:::0;2226:40:::1;:::i;:::-;:15;::::0;;;:6:::1;:15;::::0;;;;;:40:::1;:33;:40;:::i;:::-;2294:7;2281:39;2303:5;:16;;;2281:39;;;;;;:::i;956:145:82:-:0;1046:7;1084:9;1076:18;;;;;;;1066:77:116;1104:7;1130:6;-1:-1:-1;;;;;1130:6:116;1066:77;:::o;1332:176:16:-;1440:7;1470:15;;;:6;:15;;;;;:31;;;;1332:176::o;971:196::-;1092:7;1122:15;;;:6;:15;;;;;;;;:38;;;:31;;;;:38;;;;;;971:196::o;3864:276:36:-;4033:10;;:::i;:::-;4066:15;;;;:6;:15;;;;;;;:67;;-1:-1:-1;;;4066:67:36;;:56;;;;:67;;:15;4123:9;;4066:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4264:157:8:-;4363:7;4393:15;;;:6;:15;;;;;;;;:21;;-1:-1:-1;;;;;4393:21:8;;4264:157::o;3307:268:36:-;3474:6;3503:15;;;:6;:15;;;;;;:65;;-1:-1:-1;;;3503:65:36;;:54;;;;:65;;:15;3558:9;;3503:65;;;:::i;6636:1153:16:-;6748:7;6793:15;;;:6;:15;;;;;6748:7;6844:27;6800:7;6844:18;:27::i;:::-;6931:32;;;;6881:25;6909:55;;;:21;;;:55;;;;;;6979:21;;;;6818:53;;-1:-1:-1;6909:55:16;6979:26;:59;;;;-1:-1:-1;7009:29:16;;6979:59;6975:82;;;-1:-1:-1;7055:1:16;;-1:-1:-1;7040:17:16;;-1:-1:-1;;7040:17:16;6975:82;7069:34;7105:35;7144:28;7156:15;7144:11;:28::i;:::-;7068:104;;;;7183:36;7221:37;7262:30;7274:17;7262:11;:30::i;:::-;7182:110;;;;7321:29;7354:1;7321:34;:135;;;-1:-1:-1;7360:32:16;;;;;:95;;;7426:29;7396:27;:59;7360:95;7320:350;;;;7522:29;7491:27;:60;:165;;;;;7614:42;7629:26;7614:14;:42::i;:::-;7571:40;7586:24;7571:14;:40::i;:::-;:85;7491:165;7303:480;;;7702:15;7695:22;;;;;;;;;;;7303:480;7755:17;7748:24;;;;;;;;;;;10335:286;10456:4;10505:15;;;:6;:15;;;;;;;;:34;;;:26;;;;:34;;;;:44;;10563:41;;;10505:44;;;;;10335:286::o;4146:311:36:-;4327:24;;:::i;:::-;4374:15;;;;:6;:15;;;;;;;:76;;-1:-1:-1;;;4374:76:36;;:65;;;;:76;;:15;4440:9;;4374:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3851:539:13:-;4002:39;4012:7;4021;;-1:-1:-1;;;;;;4021:7:13;4030:10;4002:9;:39::i;:::-;3981:143;;;;-1:-1:-1;;;3981:143:13;;;;;;;:::i;:::-;4135:31;4169:15;;;:6;:15;;;;;;;:45;;;;-1:-1:-1;;;;;4225:70:13;;;-1:-1:-1;;;;;;4225:70:13;;;;;;4311:72;;4169:45;;;4311:72;;;;4176:7;;4169:45;;4273:22;;4311:72;:::i;8059:2064:16:-;8189:7;664:15:6;;;:6;:15;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;8212:19:16::1;8234:15:::0;;;:6:::1;:15;::::0;;;;;8285:27:::1;8241:7:::0;8285:18:::1;:27::i;:::-;8372:32:::0;;;;8322:25:::1;8350:55:::0;;;:21;;;:55:::1;::::0;;;;;8420:21;;;;8259:53;;-1:-1:-1;8350:55:16;8420:26;:59;::::1;;;-1:-1:-1::0;8450:29:16;;8420:59:::1;8416:82;;;-1:-1:-1::0;8496:1:16::1;::::0;-1:-1:-1;8481:17:16::1;::::0;-1:-1:-1;;8481:17:16::1;8416:82;8510:34;8546:35:::0;8585:28:::1;8597:15;8585:11;:28::i;:::-;8509:104;;;;8624:36;8662:37:::0;8703:30:::1;8715:17;8703:11;:30::i;:::-;8623:110;;;;8853:17;8834:15;:36;8830:399;;;8959:27:::0;8886:14:::1;::::0;::::1;:44;8931:24:::0;8886:70:::1;::::0;::::1;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8886:70:16;:100;9040:21;;;;9004:32;;;;:57:::1;9000:80;;;-1:-1:-1::0;9078:1:16::1;::::0;-1:-1:-1;9063:17:16::1;::::0;-1:-1:-1;;;;;;9063:17:16::1;9000:80;-1:-1:-1::0;;;9094:32:16;;;;:37;;9130:1:::1;9094:37;::::0;;-1:-1:-1;9203:15:16;-1:-1:-1;9196:22:16::1;::::0;-1:-1:-1;9196:22:16::1;8830:399;9326:34:::0;;;:135:::1;;-1:-1:-1::0;9365:32:16;;;::::1;::::0;:95:::1;;;9431:29;9401:27;:59;9365:95;9325:350;;;;9527:29;9496:27;:60;:165;;;;;9619:42;9634:26;9619:14;:42::i;:::-;9576:40;9591:24;9576:14;:40::i;:::-;:85;9496:165;9308:809;;;9773:27:::0;9700:14:::1;::::0;::::1;:44;9745:24:::0;9700:70:::1;::::0;::::1;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9700:70:16;:100;-1:-1:-1;9821:15:16;;-1:-1:-1;9814:22:16::1;::::0;-1:-1:-1;;;;;9814:22:16::1;9308:809;9871:34:::0;;;:95:::1;;-1:-1:-1::0;9945:21:16;;;;9909:32;;;;:57:::1;9871:95;9867:151;;;-1:-1:-1::0;10001:1:16::1;::::0;-1:-1:-1;9986:17:16::1;::::0;-1:-1:-1;;;;;;9986:17:16::1;9867:151;-1:-1:-1::0;;;10031:32:16;;;;:37;;10067:1:::1;10031:37;::::0;;10089:17;-1:-1:-1;10082:24:16::1;::::0;-1:-1:-1;;10082:24:16::1;895:46:8::0;;;;;;;;;;;;;;;:::o;1131:237:19:-;1268:5;1296:15;;;:6;:15;;;;;:65;;1351:9;1296:65;:54;:65;:::i;2747:277:36:-;2918:7;2948:15;;;:6;:15;;;;;;:69;;-1:-1:-1;;;2948:69:36;;:58;;;;:69;;:15;3007:9;;2948:69;;;:::i;2145:203:16:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;-1:-1:-1;2289:15:16::1;::::0;;;:6:::1;:15;::::0;;;;;:37;;:52;2145:203::o;10833:248::-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;-1:-1:-1;11026:48:16::1;::::0;;;;::::1;::::0;;11050:4:::1;11026:48:::0;;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;10989:15:16;;;;;;;;;:34;;;:26:::1;::::0;;::::1;:34:::0;;;;;:85;;;;-1:-1:-1;;10989:85:16::1;::::0;::::1;;;::::0;;;;::::1;::::0;10833:248::o;1961:225:36:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;2100:15:36::1;::::0;;;:6:::1;:15;::::0;;;;;;:43;;-1:-1:-1;;;2100:43:36;;:36:::1;::::0;::::1;::::0;:43:::1;::::0;:15;2137:5;;2100:43:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2158:21:36::1;::::0;2171:7;;-1:-1:-1;2158:21:36::1;::::0;-1:-1:-1;2158:21:36;;::::1;1961:225:::0;;;:::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;4599:179:13:-;4702:21;;:::i;:::-;-1:-1:-1;4746:15:13;;;;:6;:15;;;;;;;;;4739:32;;;;;;;4746:25;;;4739:32;-1:-1:-1;;;;;4739:32:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:179::o;1411:101:8:-;1280:12:116;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:116;;;:22;;;1262:67;;;;-1:-1:-1;;;1262:67:116;;;;;;;:::i;:::-;-1:-1:-1;;;;;1477:21:8::1;;::::0;;;:14:::1;:21;::::0;;;;:28;;-1:-1:-1;;1477:28:8::1;1501:4;1477:28;::::0;;1411:101::o;3276:186:6:-;3382:4;3410:15;;;:6;:15;;;;;;;;:35;;;:22;;:35;;;;;-1:-1:-1;;;;;3410:44:6;;;;;;;;;;;;;;;3276:186::o;2464:277:36:-;2635:7;2665:15;;;:6;:15;;;;;;:69;;-1:-1:-1;;;2665:69:36;;:58;;;;:69;;:15;2724:9;;2665:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2192:266::-;2360:5;2388:15;;;:6;:15;;;;;;:63;;-1:-1:-1;;;2388:63:36;;:52;;;;:63;;:15;2441:9;;2388:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3904:159:8:-;4004:7;4034:15;;;:6;:15;;;;;:22;;;;-1:-1:-1;;;;;4034:22:8;;3904:159::o;1983:240:116:-;1280:12;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:116;;;:22;;;1262:67;;;;-1:-1:-1;;;1262:67:116;;;;;;;:::i;:::-;-1:-1:-1;;;;;2071:22:116;::::1;2063:73;;;;-1:-1:-1::0;;;2063:73:116::1;;;;;;;:::i;:::-;2172:6;::::0;;2151:38:::1;::::0;-1:-1:-1;;;;;2151:38:116;;::::1;::::0;2172:6;::::1;::::0;2151:38:::1;::::0;::::1;2199:6;:17:::0;;-1:-1:-1;;;;;;2199:17:116::1;-1:-1:-1::0;;;;;2199:17:116;;;::::1;::::0;;;::::1;::::0;;1983:240::o;1959:180:16:-;2065:7;2095:15;;;:6;:15;;;;;:37;;;;1959:180::o;4420:1363:18:-;4491:12;;:::i;:::-;4522:1254;;;;;;;;-1:-1:-1;;;;4575:40:18;;;:17;;;:40;;;;;;;4522:1254;;4619:3;4575:47;4541:84;;;;;;;;4522:1254;;;;;;;;;;-1:-1:-1;;;4647:31:18;;;;:17;;;4522:1254;4647:31;;;;;;;;4522:1254;;;;-1:-1:-1;;;4701:38:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4762:33:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4818:33:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4874:36:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4934:34:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5003:38:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5063:36:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5121:31:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5174:40:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5236:46:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5304:46:18;;;;;;;;;4522:1254;;;;5372:51;;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5445:35:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5503:37:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5562:29:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5613:38:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5673:33:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5728:37:18;;;;;;;;4522:1254;;;;;4515:1261;-1:-1:-1;4420:1363:18;;;:::o;5866:1400::-;5946:12;;:::i;:::-;5977:1282;;;;;;;;-1:-1:-1;;;;6030:42:18;;;:17;;;:42;;;;;;;5977:1282;;6076:3;6030:49;5996:86;;;;;;;;5977:1282;;;;;;;;;;-1:-1:-1;;;6104:33:18;;;;:17;;;5977:1282;6104:33;;;;;;;;5977:1282;;;;-1:-1:-1;;;6160:40:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6223:35:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6281:35:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6339:38:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6401:36:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6460:40:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6522:38:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6582:33:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6637:42:18;;;;;;;;;5977:1282;;;;6701:48;;;;;;;;;;5977:1282;;;;6771:48;;;;;;;;;;5977:1282;;;;6841:53;;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6916:37:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6976:39:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7037:31:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7090:40:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7152:35:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7209:39:18;;;;;;;;5977:1282;;;;;5970:1289;-1:-1:-1;5866:1400:18;;;:::o;448:324:15:-;522:16;550:25;592:5;:14;;:21;;;578:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;578:36:15;-1:-1:-1;550:64:15;-1:-1:-1;630:9:15;625:115;649:21;;;;645:25;;625:115;;;705:24;;;;:21;;;:24;;;;;;691:11;;:8;;727:1;;691:11;;;;;;;;;;;;;;;:38;672:3;;625:115;;;-1:-1:-1;757:8:15;448:324;-1:-1:-1;;448:324:15:o;7794:218:18:-;7935:7;7973:31;;;:17;;;;;:31;;;;;;;7794:218::o;2593:1097:8:-;2847:19;2869:15;;;:6;:15;;;;;2988:11;;;;:20;2967:110;;;;-1:-1:-1;;;2967:110:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;3176:21:8;;;;;;:14;:21;;;;;;;;:29;;:21;:29;3155:117;;;;-1:-1:-1;;;3155:117:8;;;;;;;:::i;:::-;3283:18;;3311:27;;:15;;;:27;;-1:-1:-1;;;;;;3311:27:8;;;-1:-1:-1;;;;;3311:27:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3283:18:8;;;-1:-1:-1;3283:18:8;;;-1:-1:-1;;;;;;3348:21:8;3283:18;3348:21;;;;;;;3379:11;;:19;;;;;;;;;;;3409:30;3283:18;3433:5;3409:23;:30::i;:::-;3449:39;:5;3482;3449:39;:32;:39;:::i;:::-;3498:36;:5;3525:8;3498:36;:26;:36;:::i;:::-;-1:-1:-1;;;;;3592:19:8;;;3588:55;;3613:30;3628:7;3637:5;3613:14;:30::i;:::-;3659:24;3675:7;3659:24;;;;;;:::i;:::-;;;;;;;;2593:1097;;;;;;;;:::o;2426:1921:18:-;2522:109;2541:5;-1:-1:-1;;;2627:3:18;2595:5;:25;;;2589:32;;;;;;;;2581:41;;2573:57;;2522:18;:109::i;:::-;2641:68;2660:5;-1:-1:-1;;;2691:5:18;:16;;;2683:25;;2641:18;:68::i;:::-;2719:82;2738:5;-1:-1:-1;;;2776:5:18;:23;;;2768:32;;2719:18;:82::i;:::-;2811:72;2830:5;-1:-1:-1;;;2863:5:18;:18;;;2855:27;;2811:18;:72::i;:::-;2893;2912:5;-1:-1:-1;;;2945:5:18;:18;;;2937:27;;2893:18;:72::i;:::-;2975:78;2994:5;-1:-1:-1;;;3030:5:18;:21;;;3022:30;;2975:18;:78::i;:::-;3063:82;3082:5;-1:-1:-1;;;3120:5:18;:23;;;3112:32;;3063:18;:82::i;:::-;3155:78;3174:5;-1:-1:-1;;;3210:5:18;:21;;;3202:30;;3155:18;:78::i;:::-;3243:68;3262:5;-1:-1:-1;;;3293:5:18;:16;;;3285:25;;3243:18;:68::i;:::-;3321:86;3340:5;-1:-1:-1;;;3380:5:18;:25;;;3372:34;;3321:18;:86::i;:::-;3417:98;3436:5;3417:98;3482:5;:31;;;3474:40;;3417:18;:98::i;:::-;3525;3544:5;3525:98;3590:5;:31;;;3582:40;;3525:18;:98::i;:::-;3633:108;3652:5;3633:108;3703:5;:36;;;3695:45;;3633:18;:108::i;:::-;3751:76;3770:5;-1:-1:-1;;;3805:5:18;:20;;;3797:29;;3751:18;:76::i;:::-;3838:80;3857:5;-1:-1:-1;;;3894:5:18;:22;;;3886:31;;3838:18;:80::i;:::-;3928:64;3947:5;-1:-1:-1;;;3976:5:18;:14;;;3968:23;;3928:18;:64::i;:::-;4002:82;4021:5;-1:-1:-1;;;4059:5:18;:23;;;4051:32;;4002:18;:82::i;:::-;4094:72;4113:5;-1:-1:-1;;;4146:5:18;:18;;;4138:27;;4094:18;:72::i;:::-;4176:80;4195:5;-1:-1:-1;;;4232:5:18;:22;;;4224:31;;4176:18;:80::i;:::-;4266:74;4285:5;-1:-1:-1;;;4319:5:18;:19;;;4311:28;;4266:18;:74::i;:::-;2426:1921;;:::o;768:104:115:-;855:10;768:104;:::o;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;481:1872:18:-;568:107;587:5;-1:-1:-1;;;671:3:18;639:5;:25;;;633:32;;;;;;;568:107;685:66;704:5;-1:-1:-1;;;733:5:18;:16;;;725:25;;685:18;:66::i;:::-;761:80;780:5;-1:-1:-1;;;816:5:18;:23;;;808:32;;761:18;:80::i;:::-;851:70;870:5;-1:-1:-1;;;901:5:18;:18;;;893:27;;851:18;:70::i;:::-;931;950:5;-1:-1:-1;;;981:5:18;:18;;;973:27;;931:18;:70::i;:::-;1011:76;1030:5;-1:-1:-1;;;1064:5:18;:21;;;1056:30;;1011:18;:76::i;:::-;1097:80;1116:5;-1:-1:-1;;;1152:5:18;:23;;;1144:32;;1097:18;:80::i;:::-;1187:76;1206:5;-1:-1:-1;;;1240:5:18;:21;;;1232:30;;1187:18;:76::i;:::-;1273:66;1292:5;-1:-1:-1;;;1321:5:18;:16;;;1313:25;;1273:18;:66::i;:::-;1349:84;1368:5;-1:-1:-1;;;1406:5:18;:25;;;1398:34;;1349:18;:84::i;:::-;1443:96;1462:5;-1:-1:-1;;;1506:5:18;:31;;;1498:40;;1443:18;:96::i;:::-;1549;1568:5;-1:-1:-1;;;1612:5:18;:31;;;1604:40;;1549:18;:96::i;:::-;1655:106;1674:5;1655:106;1723:5;:36;;;1715:45;;1655:18;:106::i;:::-;1771:74;1790:5;-1:-1:-1;;;1823:5:18;:20;;;1815:29;;1771:18;:74::i;:::-;1856:78;1875:5;-1:-1:-1;;;1910:5:18;:22;;;1902:31;;1856:18;:78::i;:::-;1944:62;1963:5;-1:-1:-1;;;1990:5:18;:14;;;1982:23;;1944:18;:62::i;:::-;2016:80;2035:5;-1:-1:-1;;;2071:5:18;:23;;;2063:32;;2016:18;:80::i;:::-;2106:70;2125:5;-1:-1:-1;;;2156:5:18;:18;;;2148:27;;2106:18;:70::i;:::-;2186:78;2205:5;-1:-1:-1;;;2240:5:18;:22;;;2232:31;;2186:18;:78::i;:::-;2274:72;2293:5;-1:-1:-1;;;2325:5:18;:19;;;2317:28;;2274:18;:72::i;4463:1097:36:-;4587:7;4632:15;;;:6;:15;;;;;4657:21;;:::i;:::-;4681:28;;-1:-1:-1;;;4681:28:36;;:26;;;;:28;;:5;;:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4897:12;;4657:52;;-1:-1:-1;4720:23:36;;;;;;;;4874:203;;4897:12;;;-1:-1:-1;;;;;4897:12:36;4886:47;4657:52;4974:14;;;4720:23;5019:12;4974:58;;;;;;;;;;;;5050:12;4886:190;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4874:203::-;4822:255;;;;5114:22;5140:1;5114:27;5113:94;;;;5184:22;5163:18;:43;5113:94;:221;;;;5254:18;5228:22;:44;:105;;;;;5304:29;5319:13;5304:14;:29::i;:::-;5276:25;5291:9;5276:14;:25::i;:::-;:57;5228:105;5092:376;;;5392:18;5367:43;;5444:9;5428:25;;5092:376;4463:1097;;5503:50;5515:13;5530:22;5503:11;:50::i;:::-;5496:57;4463:1097;-1:-1:-1;;;;;;4463:1097:36:o;7273:515:18:-;7411:5;-1:-1:-1;;;7436:12:18;:46;7432:350;;;-1:-1:-1;;;;7519:40:18;;;;:17;;;:40;;;;;;7563:3;7519:47;7498:70;;7432:350;-1:-1:-1;;;7589:12:18;:48;7585:197;;;-1:-1:-1;;;;7674:42:18;;;;:17;;;:42;;;;;;7720:3;7674:49;7653:72;;7585:197;-1:-1:-1;7769:1:18;7756:15;;137:305:15;239:9;234:202;258:8;:15;254:1;:19;234:202;;;321:1;313:10;;298:8;307:1;298:11;;;;;;;;;;;;;;:25;294:36;;;325:5;;294:36;371:8;380:1;371:11;;;;;;;;;;;;;;;;;;;344:24;;;;:21;;;:24;;;;;;;:38;:21;420:5;396:21;;;:29;;;234:202;;;;137:305;;:::o;3721:194:6:-;3798:15;;;;3845:4;3798:15;;;;;;;;:35;;;:22;;:35;;;;;-1:-1:-1;;;;;3798:44:6;;;;;;;;;;:51;;-1:-1:-1;;3798:51:6;;;;;;;3864:44;;3798;;3805:7;;3864:44;;;;;:::i;:::-;;;;;;;;3721:194;;:::o;166:252:18:-;314:31;;;;:17;;;:31;;;;;;:40;;310:53;;;356:7;;310:53;372:31;;;;:17;;;;;:31;;;;;:39;166:252::o;9033:198:106:-;1020:12;9157:23;;9145:35;;9198:25;;;;9190:34;;;;;8467:561;8539:17;;;;8604:40;1020:12;8616:9;:27;;8604:11;:40::i;:::-;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;3309:605::-;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;2045:511::-;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;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;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;97:33;72:20;97:33;:::i;142:134::-;220:13;;238:33;220:13;238:33;:::i;1531:188::-;1636:13;;1654:60;1636:13;1654:60;:::i;1891:162::-;1983:13;;2001:47;1983:13;2001:47;:::i;2060:180::-;2152:20;;2177:58;2152:20;2177:58;:::i;2247:184::-;2350:13;;2368:58;2350:13;2368:58;:::i;3383:170::-;3479:13;;3497:51;3479:13;3497:51;:::i;3560:166::-;3645:20;;3670:51;3645:20;3670:51;:::i;3733:170::-;3829:13;;3847:51;3829:13;3847:51;:::i;6083:166::-;;6201:3;6192:6;6187:3;6183:16;6179:26;6176:2;;;-1:-1;;6208:12;7135:162;;7248:4;7239:6;7234:3;7230:16;7226:27;7223:2;;;-1:-1;;7256:12;12229:881;;12365:4;12353:9;12348:3;12344:19;12340:30;12337:2;;;-1:-1;;12373:12;12337:2;12401:20;12365:4;12401:20;:::i;:::-;12392:29;;1148:6;1142:13;12487:16;12480:86;12630:2;12699:9;12695:22;1142:13;12630:2;12649:5;12645:16;12638:86;12786:2;12882:9;12878:22;2734:13;2752:60;2806:5;2752:60;:::i;:::-;12786:2;12801:16;;12794:113;12968:2;13060:22;;2734:13;2752:60;2734:13;2752:60;:::i;:::-;12968:2;12983:16;;12976:113;12987:5;12331:779;-1:-1;;12331:779::o;13134:810::-;;13256:4;13244:9;13239:3;13235:19;13231:30;13228:2;;;-1:-1;;13264:12;13228:2;13292:20;13256:4;13292:20;:::i;:::-;13283:29;;18413:6;18407:13;13373:16;13366:86;13510:2;13586:9;13582:22;2350:13;2368:58;2420:5;2368:58;:::i;:::-;13510:2;13525:16;;13518:93;13669:2;13741:22;;1983:13;2001:47;1983:13;2001:47;:::i;:::-;13669:2;13684:16;;13677:93;13832:2;13894:22;;867:13;885:30;867:13;885:30;:::i;13967:650::-;;14088:4;14076:9;14071:3;14067:19;14063:30;14060:2;;;-1:-1;;14096:12;14060:2;14124:20;14088:4;14124:20;:::i;:::-;14115:29;;18413:6;18407:13;14205:16;14198:86;14342:2;14418:9;14414:22;2350:13;2368:58;2420:5;2368:58;:::i;:::-;14342:2;14357:16;;14350:93;14505:2;14567:22;;867:13;885:30;867:13;885:30;:::i;:::-;14505:2;14520:16;;14513:83;14524:5;14054:563;-1:-1;;14054:563::o;14645:158::-;;14755:3;14746:6;14741:3;14737:16;14733:26;14730:2;;;-1:-1;;14762:12;18607:241;;18711:2;18699:9;18690:7;18686:23;18682:32;18679:2;;;-1:-1;;18717:12;18679:2;85:6;72:20;97:33;124:5;97:33;:::i;18855:263::-;;18970:2;18958:9;18949:7;18945:23;18941:32;18938:2;;;-1:-1;;18976:12;18938:2;226:6;220:13;238:33;265:5;238:33;:::i;19125:257::-;;19237:2;19225:9;19216:7;19212:23;19208:32;19205:2;;;-1:-1;;19243:12;19205:2;873:6;867:13;885:30;909:5;885:30;:::i;19389:241::-;;19493:2;19481:9;19472:7;19468:23;19464:32;19461:2;;;-1:-1;;19499:12;19461:2;-1:-1;994:20;;19455:175;-1:-1;19455:175::o;19637:263::-;;19752:2;19740:9;19731:7;19727:23;19723:32;19720:2;;;-1:-1;;19758:12;19720:2;-1:-1;1142:13;;19714:186;-1:-1;19714:186::o;19907:366::-;;;20028:2;20016:9;20007:7;20003:23;19999:32;19996:2;;;-1:-1;;20034:12;19996:2;1007:6;994:20;20086:63;;20186:2;20229:9;20225:22;72:20;97:33;124:5;97:33;:::i;:::-;20194:63;;;;19990:283;;;;;:::o;20280:366::-;;;20401:2;20389:9;20380:7;20376:23;20372:32;20369:2;;;-1:-1;;20407:12;20369:2;-1:-1;;994:20;;;20559:2;20598:22;;;994:20;;-1:-1;20363:283::o;20653:489::-;;;;20790:2;20778:9;20769:7;20765:23;20761:32;20758:2;;;-1:-1;;20796:12;20758:2;-1:-1;;994:20;;;20948:2;20987:22;;994:20;;-1:-1;21056:2;21094:22;;;5845:20;;20752:390;-1:-1;20752:390::o;21149:489::-;;;;21286:2;21274:9;21265:7;21261:23;21257:32;21254:2;;;-1:-1;;21292:12;21254:2;994:20;;;-1:-1;21444:2;21482:22;;1271:20;-1:-1;;;;;;84748:78;;91095:34;;91085:2;;-1:-1;;91133:12;91085:2;21452:62;-1:-1;21551:2;21590:22;;72:20;97:33;72:20;97:33;:::i;:::-;21559:63;;;;21248:390;;;;;:::o;21645:426::-;;;21795:4;21783:9;21774:7;21770:23;21766:34;21763:2;;;-1:-1;;21803:12;21763:2;1007:6;994:20;21855:63;;21973:82;22047:7;21955:2;22027:9;22023:22;21973:82;:::i;:::-;21963:92;;21757:314;;;;;:::o;22078:1464::-;;;;;;;;;;22425:4;22413:9;22404:7;22400:23;22396:34;22393:2;;;-1:-1;;22433:12;22393:2;1007:6;994:20;22485:63;;22603:82;22677:7;22585:2;22657:9;22653:22;22603:82;:::i;:::-;22593:92;;22742:79;22813:7;22722:4;22793:9;22789:22;22742:79;:::i;:::-;22732:89;;22886:4;22875:9;22871:20;22858:34;22912:18;;22904:6;22901:30;22898:2;;;-1:-1;;22934:12;22898:2;23035:6;23024:9;23020:22;431:3;424:4;416:6;412:17;408:27;398:2;;-1:-1;;439:12;398:2;482:6;469:20;459:30;;22912:18;501:6;498:30;495:2;;;-1:-1;;531:12;495:2;626:3;22585:2;;610:6;606:17;567:6;592:32;;589:41;586:2;;;-1:-1;;633:12;586:2;22585;563:17;;-1:-1;22954:98;;-1:-1;23109:87;;-1:-1;23188:7;23089:4;23164:22;;23109:87;:::i;:::-;23099:97;;23253:53;23298:7;23233:4;23278:9;23274:22;23253:53;:::i;:::-;23243:63;;23363:53;23408:7;23343:4;23388:9;23384:22;23363:53;:::i;:::-;23353:63;;23473:53;23518:7;23453:4;23498:9;23494:22;23473:53;:::i;:::-;23463:63;;22387:1155;;;;;;;;;;;:::o;23549:419::-;;;23696:3;23684:9;23675:7;23671:23;23667:33;23664:2;;;-1:-1;;23703:12;23664:2;1007:6;994:20;23755:63;;23873:79;23944:7;23855:2;23924:9;23920:22;23873:79;:::i;24348:271::-;;24467:2;24455:9;24446:7;24442:23;24438:32;24435:2;;;-1:-1;;24473:12;24435:2;4761:6;4748:20;4773:48;4815:5;4773:48;:::i;24626:396::-;;;24762:2;24750:9;24741:7;24737:23;24733:32;24730:2;;;-1:-1;;24768:12;24730:2;4761:6;4748:20;4773:48;4815:5;4773:48;:::i;:::-;24820:78;24935:2;24974:22;;;;18259:20;;-1:-1;;;24724:298::o;25297:306::-;;25433:3;25421:9;25412:7;25408:23;25404:33;25401:2;;;-1:-1;;25440:12;25401:2;6441:20;25433:3;6441:20;:::i;:::-;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6528:75;;6678:2;6732:22;;72:20;97:33;72:20;97:33;:::i;:::-;6678:2;6693:16;;6686:75;6837:2;6891:22;;72:20;97:33;72:20;97:33;:::i;:::-;6837:2;6852:16;;6845:75;7000:2;7054:22;;72:20;97:33;72:20;97:33;:::i;:::-;7000:2;7015:16;;7008:75;7019:5;25395:208;-1:-1;;;25395:208::o;25610:319::-;;25752:4;25740:9;25731:7;25727:23;25723:34;25720:2;;;-1:-1;;25760:12;25720:2;7491:22;7506:6;7491:22;:::i;:::-;7603:78;7677:3;7653:22;7603:78;:::i;:::-;7585:16;7578:104;7780:74;7850:3;7747:2;7830:9;7826:22;7780:74;:::i;:::-;7747:2;7766:5;7762:16;7755:100;7957:78;8031:3;7924:2;8011:9;8007:22;7957:78;:::i;:::-;7924:2;7943:5;7939:16;7932:104;8144:84;8224:3;8111:2;8204:9;8200:22;8144:84;:::i;:::-;8111:2;8130:5;8126:16;8119:110;8341:87;8424:3;8307;8404:9;8400:22;8341:87;:::i;:::-;8307:3;8327:5;8323:16;8316:113;8540:86;8622:3;8506;8602:9;8598:22;8540:86;:::i;:::-;8506:3;8526:5;8522:16;8515:112;8726:74;8796:3;8692;8776:9;8772:22;8726:74;:::i;:::-;8692:3;8712:5;8708:16;8701:100;8914:85;8995:3;8880;8975:9;8971:22;8914:85;:::i;:::-;8880:3;8900:5;8896:16;8889:111;9065:3;9101:60;9157:3;9065;9137:9;9133:22;9101:60;:::i;:::-;9081:18;;;9074:88;9237:3;9273:60;9329:3;9305:22;;;9273:60;:::i;:::-;9253:18;;;9246:88;9407:3;9475:22;;;18407:13;9423:18;;;9416:88;9571:3;9639:22;;;18407:13;9587:18;;;9580:88;9737:3;9805:22;;;18407:13;9753:18;;;9746:88;9903:3;9971:22;;;18407:13;9919:18;;;9912:88;10077:3;10145:22;;;18407:13;10093:18;;;10086:88;10248:3;10315:22;;;5991:13;10264:18;;;10257:87;10416:3;10483:22;;;5991:13;10432:18;;;10425:87;10579:3;10646:22;;;5991:13;10595:18;;;10588:87;10739:3;10806:22;;;5991:13;10755:18;;;10748:87;10911:3;10978:22;;;5991:13;10927:18;;;10920:87;11091:3;11158:22;;;5991:13;11107:18;;;11100:87;11255:3;11291:81;11368:3;11344:22;;;11291:81;:::i;:::-;11271:18;;;11264:109;11447:3;11483:81;11560:3;11536:22;;;11483:81;:::i;:::-;11474:6;11467:5;11463:18;11456:109;11668:82;11746:3;11632;11726:9;11722:22;11668:82;:::i;:::-;11659:6;11652:5;11648:18;11641:110;11863:96;11955:3;11827;11935:9;11931:22;11863:96;:::i;:::-;11843:18;;;11836:124;12073:96;12165:3;12036:4;12141:22;;12073:96;:::i;:::-;12064:6;12053:18;;12046:124;12057:5;25714:215;-1:-1;;;25714:215::o;25936:336::-;;26087:3;26075:9;26066:7;26062:23;26058:33;26055:2;;;-1:-1;;26094:12;26055:2;26156:100;26248:7;26224:22;26156:100;:::i;26279:308::-;;26416:3;26404:9;26395:7;26391:23;26387:33;26384:2;;;-1:-1;;26423:12;26384:2;26485:86;26563:7;26539:22;26485:86;:::i;26594:305::-;;26730:2;26718:9;26709:7;26705:23;26701:32;26698:2;;;-1:-1;;26736:12;26698:2;26798:85;26875:7;26851:22;26798:85;:::i;26906:290::-;;27034:3;;27022:9;27013:7;27009:23;27005:33;27002:2;;;-1:-1;;27041:12;27002:2;14980:22;27034:3;14980:22;:::i;:::-;15099:74;15169:3;15145:22;15099:74;:::i;:::-;15074:100;;15241:2;15295:22;;;18259:20;15256:16;;;15249:75;15398:2;15452:22;;;18259:20;15413:16;;;15406:75;15550:2;15604:22;;;18259:20;15565:16;;;15558:75;15702:3;15757:22;;;18259:20;15718:16;;;15711:75;15858:3;15913:22;;;18259:20;15874:16;;;15867:75;16012:3;16067:22;;;18259:20;16028:16;;;16021:75;16170:3;16224:22;;;5845:20;16186:16;;;16179:74;16325:3;16381:22;;;5845:20;16341:18;;;16334:76;16477:3;16533:22;;;5845:20;16493:18;;;16486:76;16638:3;16694:22;;;5845:20;16654:18;;;16647:76;16805:3;16861:22;;;5845:20;16821:18;;;16814:76;16972:3;17028:22;;;5845:20;16988:18;;;16981:76;17144:3;17200:22;;;5845:20;17160:18;;;17153:76;17300:3;17356:22;;;5845:20;17316:18;;;17309:76;17458:3;17514:22;;;5845:20;17474:18;;;17467:76;17608:3;17664:22;;;5845:20;17624:18;;;17617:76;17767:3;17823:22;;;5845:20;17783:18;;;17776:76;17921:3;17977:22;;;5845:20;17937:18;;;17930:76;18079:3;18135:22;;;5845:20;18095:18;;;18088:76;;;;-1:-1;15081:16;;26996:200;-1:-1;;26996:200::o;27473:259::-;;27586:2;27574:9;27565:7;27561:23;27557:32;27554:2;;;-1:-1;;27592:12;27554:2;18552:6;18546:13;87161:4;93053:5;87150:16;93030:5;93027:33;93017:2;;-1:-1;;93064:12;27921:103;-1:-1;;;;;86945:54;27982:37;;27976:48::o;29912:166::-;89241:1;89234:5;89231:12;89221:2;;89247:9;89221:2;29998:75;;29992:86::o;30266:140::-;85087:47;85128:5;85087:47;:::i;30568:162::-;85239:58;85291:5;85239:58;:::i;31622:148::-;89842:2;89835:5;89832:13;89822:2;;89849:9;31940:148;89959:2;89952:5;89949:13;89939:2;;89966:9;48300:4944;48552:79;48616:14;48529:16;48523:23;48552:79;:::i;:::-;48714:4;48707:5;48703:16;48697:23;48726:75;48714:4;48790:3;48786:14;48772:12;48726:75;:::i;:::-;;48888:4;48881:5;48877:16;48871:23;48900:79;48888:4;48968:3;48964:14;48950:12;48900:79;:::i;:::-;;49072:4;49065:5;49061:16;49055:23;49084:85;49072:4;49158:3;49154:14;49140:12;49084:85;:::i;:::-;;49265:4;49258:5;49254:16;49248:23;49277:88;49265:4;49354:3;49350:14;49336:12;49277:88;:::i;:::-;;49460:4;49453:5;49449:16;49443:23;49472:87;49460:4;49548:3;49544:14;49530:12;49472:87;:::i;:::-;;49642:4;49635:5;49631:16;49625:23;49654:75;49642:4;49718:3;49714:14;49700:12;49654:75;:::i;:::-;;49826:4;49819:5;49815:16;49809:23;49838:86;49826:4;49913:3;49909:14;49895:12;49838:86;:::i;:::-;;50007:6;;50000:5;49996:18;49990:25;50021:65;50007:6;50073:3;50069:16;50055:12;50021:65;:::i;:::-;;;50179:6;;50172:5;50168:18;50162:25;50193:65;50179:6;50245:3;50241:16;50227:12;50193:65;:::i;:::-;-1:-1;;50349:6;50338:18;;;50332:25;50411:16;;;29380:37;50513:6;50502:18;;;50496:25;50575:16;;;29380:37;50679:6;50668:18;;;50662:25;50741:16;;;29380:37;50845:6;50834:18;;;50828:25;50907:16;;;29380:37;51019:6;51008:18;;;51002:25;51081:16;;;29380:37;51190:6;51179:18;;;51173:25;51250:16;;;29380:37;51357:6;51346:18;;;51340:25;51417:16;;;29380:37;51519:6;51508:18;;;51502:25;51579:16;;;29380:37;51678:6;51667:18;;;51661:25;51738:16;;;29380:37;51849:6;51838:18;;;51832:25;51909:16;;;29380:37;52028:6;52017:18;;;52011:25;52088:16;;;29380:37;52191:6;52180:18;;;52174:25;52205:107;52295:16;;;52174:25;52205:107;:::i;:::-;;;52404:6;52397:5;52393:18;52387:25;52517:6;52418:107;52517:6;52512:3;52508:16;52494:12;52418:107;:::i;:::-;52610:6;52603:5;52599:18;52593:25;52573:45;;52624:109;52725:6;52720:3;52716:16;52702:12;52624:109;:::i;:::-;52816:18;;52810:25;;-1:-1;52841:137;52970:6;52961:16;;52810:25;52841:137;:::i;:::-;;53072:6;53065:5;53061:18;53055:25;53086:137;53215:6;53210:3;53206:16;53192:12;53086:137;:::i;53310:1056::-;1007:6;994:20;29387:3;29380:37;81781:2;53576:16;81772:12;994:20;81781:2;53851:3;53847:14;29380:37;53996:4;53989:5;53985:16;2532:20;2557:60;2611:5;2557:60;:::i;:::-;85404;85458:5;85404:60;:::i;:::-;53996:4;54089:14;;31354:75;54237:4;54226:16;;2532:20;2557:60;2532:20;2557:60;:::i;:::-;85404;85458:5;85404:60;:::i;:::-;87753:51;54237:4;54334:3;54330:14;31000:75;;53448:918;;:::o;54432:852::-;54661:16;54655:23;29387:3;29380:37;54829:4;54822:5;54818:16;54812:23;54829:4;54893:3;54889:14;29380:37;54984:4;54977:5;54973:16;54967:23;85404:60;85458:5;85404:60;:::i;:::-;54984:4;55069:14;;31354:75;55163:4;55152:16;;55146:23;85404:60;55146:23;85404:60;:::i;56250:925::-;18272:6;18259:20;29387:3;29380:37;84400:2;56483:16;84391:12;2152:20;2177:58;2229:5;2177:58;:::i;:::-;85239;85291:5;85239:58;:::i;:::-;84400:2;56760:14;;33477:55;83634:12;;;1807:20;1832:47;1807:20;1832:47;:::i;:::-;85087;85128:5;85087:47;:::i;:::-;83634:12;56958:14;;33751:55;83776:12;;;725:20;750:30;725:20;750:30;:::i;:::-;29080:5;84582:13;84575:21;83776:12;57143:3;57139:14;29053:34;;56360:815;;:::o;57213:764::-;57409:16;57403:23;29387:3;29380:37;57571:4;57564:5;57560:16;57554:23;85239:58;85291:5;85239:58;:::i;:::-;57571:4;57636:14;;33477:55;57727:4;57716:16;;57710:23;85087:47;57710:23;85087:47;:::i;:::-;57727:4;57792:14;;33751:55;57887:4;57876:16;;;57870:23;84582:13;84575:21;57941:14;;29053:34;57313:664::o;58825:725::-;18272:6;18259:20;29387:3;29380:37;84400:2;59056:16;84391:12;2152:20;2177:58;2229:5;2177:58;:::i;:::-;85239;85291:5;85239:58;:::i;:::-;84400:2;59333:14;;33477:55;83634:12;;;725:20;750:30;725:20;750:30;:::i;:::-;29080:5;84582:13;84575:21;83634:12;59518:3;59514:14;29053:34;;58933:617;;:::o;59586:606::-;59780:16;59774:23;29387:3;29380:37;59942:4;59935:5;59931:16;59925:23;85239:58;85291:5;85239:58;:::i;:::-;59942:4;60007:14;;33477:55;60102:4;60091:16;;;60085:23;84582:13;84575:21;60156:14;;29053:34;59684:508::o;64890:222::-;-1:-1;;;;;86945:54;;;;27982:37;;65017:2;65002:18;;64988:124::o;65119:333::-;-1:-1;;;;;86945:54;;;27982:37;;86945:54;;65438:2;65423:18;;27982:37;65274:2;65259:18;;65245:207::o;65459:370::-;65636:2;65650:47;;;80906:12;;65621:18;;;81181:19;;;65459:370;;65636:2;80760:14;;;;81221;;;;65459:370;28708:260;28733:6;28730:1;28727:13;28708:260;;;28794:13;;29380:37;;81036:14;;;;27893;;;;28755:1;28748:9;28708:260;;;-1:-1;65703:116;;65607:222;-1:-1;;;;;;65607:222::o;65836:210::-;84582:13;;84575:21;29053:34;;65957:2;65942:18;;65928:118::o;66053:317::-;84582:13;;84575:21;29053:34;;66356:2;66341:18;;29380:37;66200:2;66185:18;;66171:199::o;66377:222::-;29380:37;;;66504:2;66489:18;;66475:124::o;66606:444::-;29380:37;;;-1:-1;;;;;86945:54;;;66953:2;66938:18;;27982:37;86945:54;67036:2;67021:18;;27982:37;66789:2;66774:18;;66760:290::o;67057:459::-;29380:37;;;-1:-1;;;67502:2;67487:18;;34843:26;67275:2;67260:18;;67246:270::o;67523:459::-;29380:37;;;-1:-1;;;67968:2;67953:18;;36996:32;67741:2;67726:18;;67712:270::o;67989:459::-;29380:37;;;-1:-1;;;68434:2;68419:18;;38707:32;68207:2;68192:18;;68178:270::o;68455:459::-;29380:37;;;-1:-1;;;68900:2;68885:18;;38890:34;68673:2;68658:18;;68644:270::o;68921:218::-;-1:-1;;;;;;84748:78;;;;29864:36;;69046:2;69031:18;;69017:122::o;69146:359::-;69314:2;69299:18;;88699:39;33090:5;88699:39;:::i;:::-;33041:3;33034:63;29410:5;69491:2;69480:9;69476:18;29380:37;69285:220;;;;;:::o;69737:416::-;69937:2;69951:47;;;34523:2;69922:18;;;81181:19;34559:34;81221:14;;;34539:55;34628:32;34614:12;;;34607:54;34680:12;;;69908:245::o;70160:416::-;70360:2;70374:47;;;35108:2;70345:18;;;81181:19;35144:34;81221:14;;;35124:55;35213:31;35199:12;;;35192:53;35264:12;;;70331:245::o;70583:416::-;70783:2;70797:47;;;35515:2;70768:18;;;81181:19;35551:34;81221:14;;;35531:55;-1:-1;;;35606:12;;;35599:30;35648:12;;;70754:245::o;71006:416::-;71206:2;71220:47;;;35899:2;71191:18;;;81181:19;35935:34;81221:14;;;35915:55;36004:27;35990:12;;;35983:49;36051:12;;;71177:245::o;71429:416::-;71629:2;71643:47;;;36302:2;71614:18;;;81181:19;36338:34;81221:14;;;36318:55;-1:-1;;;36393:12;;;36386:39;36444:12;;;71600:245::o;71852:416::-;72052:2;72066:47;;;36695:2;72037:18;;;81181:19;36731:34;81221:14;;;36711:55;-1:-1;;;36786:12;;;36779:35;36833:12;;;72023:245::o;72275:416::-;72475:2;72489:47;;;37267:2;72460:18;;;81181:19;37303:34;81221:14;;;37283:55;-1:-1;;;37358:12;;;37351:44;37414:12;;;72446:245::o;72698:416::-;72898:2;72912:47;;;37665:2;72883:18;;;81181:19;37701:34;81221:14;;;37681:55;37770:26;37756:12;;;37749:48;37816:12;;;72869:245::o;73121:416::-;73321:2;73335:47;;;38067:2;73306:18;;;81181:19;38103:34;81221:14;;;38083:55;-1:-1;;;38158:12;;;38151:33;38203:12;;;73292:245::o;73544:416::-;73744:2;73758:47;;;73729:18;;;81181:19;38490:34;81221:14;;;38470:55;38544:12;;;73715:245::o;73967:416::-;74167:2;74181:47;;;39163:2;74152:18;;;81181:19;39199:34;81221:14;;;39179:55;39268:25;39254:12;;;39247:47;39313:12;;;74138:245::o;74390:416::-;74590:2;74604:47;;;39564:2;74575:18;;;81181:19;39600:34;81221:14;;;39580:55;39669:27;39655:12;;;39648:49;39716:12;;;74561:245::o;74813:416::-;75013:2;75027:47;;;39967:2;74998:18;;;81181:19;40003:34;81221:14;;;39983:55;-1:-1;;;40058:12;;;40051:39;40109:12;;;74984:245::o;75236:416::-;75436:2;75450:47;;;40360:2;75421:18;;;81181:19;40396:34;81221:14;;;40376:55;-1:-1;;;40451:12;;;40444:44;40507:12;;;75407:245::o;75659:416::-;75859:2;75873:47;;;40758:2;75844:18;;;81181:19;40794:34;81221:14;;;40774:55;40863:34;40849:12;;;40842:56;-1:-1;;;40918:12;;;40911:26;40956:12;;;75830:245::o;76082:351::-;41268:23;;-1:-1;;;;;86945:54;;;27982:37;;41453:4;41442:16;;;41436:23;86945:54;;41513:14;;;27982:37;41622:4;41611:16;;;41605:23;86945:54;;41682:14;;;27982:37;41795:4;41784:16;;;41778:23;86945:54;41855:14;;;27982:37;;;;76273:3;76258:19;;76244:189::o;76733:405::-;29380:37;;;77124:2;77109:18;;29380:37;76920:2;76905:18;;76891:247::o;77145:519::-;29380:37;;;77388:4;77373:20;;77650:2;82980:12;;;;42379:87;;77635:18;;82936:57;82980:12;42356:16;82936:57;:::i;:::-;42379:87;:::i;:::-;42532:64;42579:16;42572:5;42532:64;:::i;:::-;42602:83;42670:14;77639:9;42670:14;42656:12;42602:83;:::i;:::-;;;42755:68;42670:14;42810:5;42806:16;42799:5;42755:68;:::i;:::-;42829:87;42901:14;77639:9;42901:14;42887:12;42829:87;:::i;:::-;;42992:74;42901:14;43053:5;43049:16;43042:5;42992:74;:::i;:::-;43072:93;43150:14;77639:9;43150:14;43136:12;43072:93;:::i;:::-;;43244:77;43150:14;43308:5;43304:16;43297:5;43244:77;:::i;:::-;43327:96;43408:14;77639:9;43408:14;43394:12;43327:96;:::i;:::-;;43501:76;43408:14;43564:5;43560:16;43553:5;43501:76;:::i;:::-;43583:95;43663:14;77639:9;43663:14;43649:12;43583:95;:::i;:::-;;43744:64;43663:14;43795:5;43791:16;43784:5;43744:64;:::i;:::-;43814:83;43882:14;77639:9;43882:14;43868:12;43814:83;:::i;:::-;;43977:75;43882:14;44039:5;44035:16;44028:5;43977:75;:::i;:::-;44137:14;44058:94;44137:14;77639:9;44137:14;44123:12;44058:94;:::i;:::-;44218:52;44137:14;44255:5;44251:18;44244:5;44218:52;:::i;:::-;44198:72;;;44332:16;44276:73;44332:16;77639:9;44332:16;44318:12;44276:73;:::i;:::-;44425:52;44332:16;44462:5;44458:18;44451:5;44425:52;:::i;:::-;44405:72;;;44539:16;44483:73;44539:16;77639:9;44539:16;44525:12;44483:73;:::i;:::-;44744:16;;;44539;44667:5;44663:18;18259:20;44744:16;77639:9;44744:16;29380:37;;44943:16;44744;44866:5;44862:18;18259:20;44943:16;77639:9;44943:16;29380:37;45144:16;;;44943;45067:5;45063:18;18259:20;45144:16;77639:9;45144:16;29380:37;;45345:16;45144;45268:5;45264:18;18259:20;45345:16;77639:9;45345:16;29380:37;45554:16;;;45345;45477:5;45473:18;18259:20;45554:16;77639:9;45554:16;29380:37;;45757:16;45554;45682:5;45678:18;5845:20;45757:16;77639:9;45757:16;29380:37;45958:16;;;45757;45883:5;45879:18;5845:20;45958:16;77639:9;45958:16;29380:37;;46154:16;45958;46079:5;46075:18;5845:20;46154:16;77639:9;46154:16;29380:37;46347:16;;;46154;46272:5;46268:18;5845:20;46347:16;77639:9;46347:16;29380:37;;46552:16;46347;46477:5;46473:18;5845:20;46552:16;77639:9;46552:16;29380:37;46765:16;;;46552;46690:5;46686:18;5845:20;46765:16;77639:9;46765:16;29380:37;;46932:117;47032:16;77639:9;47032:16;46765;46911:5;46907:18;46932:117;:::i;:::-;;47205;47305:16;77639:9;47305:16;47191:6;47184:5;47180:18;47205:117;:::i;:::-;47472:119;47574:16;77639:9;47574:16;47458:6;47451:5;47447:18;47472:119;:::i;:::-;47764:147;47894:16;77639:9;47894:16;47750:6;47743:5;47739:18;47764:147;:::i;:::-;48084;48214:16;77639:9;48214:16;48070:6;48063:5;48059:18;48084:147;:::i;77671:332::-;77852:4;77837:20;;77868:125;77841:9;77966:6;77868:125;:::i;78010:584::-;78260:4;78245:20;;78276:125;78249:9;78374:6;78276:125;:::i;:::-;29410:5;78480:4;78469:9;78465:20;29380:37;88699:39;33090:5;88699:39;:::i;:::-;78578:4;78567:9;78563:20;33034:63;78231:363;;;;;;:::o;78601:367::-;78800:3;78785:19;;78815:143;78789:9;78931:6;78815:143;:::i;78975:311::-;79146:3;79131:19;;79161:115;79135:9;79249:6;79161:115;:::i;79293:306::-;79462:2;79447:18;;79476:113;79451:9;79562:6;79476:113;:::i;79606:319::-;;79781:3;79770:9;79766:19;79758:27;;61139:86;61210:14;61116:16;61110:23;61139:86;:::i;:::-;61310:4;61299:16;;;61293:23;61370:14;;;29380:37;61477:4;61466:16;;;61460:23;61537:14;;;29380:37;61639:4;61628:16;;;61622:23;61699:14;;;29380:37;61801:4;61790:16;;;61784:23;61861:14;;;29380:37;61966:4;61955:16;;;61949:23;62026:14;;;29380:37;62129:4;62118:16;;;62112:23;62189:14;;;29380:37;62296:4;62285:16;;;62279:23;62354:14;;;29380:37;62459:6;62448:18;;;62442:25;62519:16;;;29380:37;62621:6;62610:18;;;62604:25;62681:16;;;29380:37;62792:6;62781:18;;;62775:25;62852:16;;;29380:37;62969:6;62958:18;;;62952:25;63029:16;;;29380:37;63146:6;63135:18;;;63129:25;63206:16;;;29380:37;63328:6;63317:18;;;63311:25;63388:16;;;29380:37;63494:6;63483:18;;;63477:25;63554:16;;;29380:37;63662:6;63651:18;;;63645:25;63722:16;;;29380:37;63822:6;63811:18;;;63805:25;63882:16;;;29380:37;63991:6;63980:18;;;63974:25;64051:16;;;29380:37;64155:6;64144:18;;;64138:25;64215:16;;;29380:37;64323:6;64312:18;;;64306:25;64383:16;;;;29380:37;;;;79752:173;:::o;80161:214::-;87161:4;87150:16;;;;64843:35;;80284:2;80269:18;;80255:120::o;80382:256::-;80444:2;80438:9;80470:17;;;80545:18;80530:34;;80566:22;;;80527:62;80524:2;;;80602:1;;80592:12;80524:2;80444;80611:22;80422:216;;-1:-1;80422:216::o;81422:119::-;;85:6;72:20;97:33;124:5;97:33;:::i;81800:173::-;;1447:6;1434:20;1459:60;1513:5;1459:60;:::i;81982:147::-;;1820:6;1807:20;1832:47;1873:5;1832:47;:::i;82138:169::-;;2165:6;2152:20;2177:58;2229:5;2177:58;:::i;82680:155::-;;3308:6;3295:20;3320:51;3365:5;3320:51;:::i;86267:136::-;86333:16;90319:2;90309:13;;90299:2;;90326:9;89270:105;89353:1;89346:5;89343:12;89333:2;;89359:9;89333:2;89327:48;:::o;89382:116::-;89476:1;89469:5;89466:12;89456:2;;89482:9;89505:118;89601:1;89594:5;89591:12;89581:2;;89607:9;90671:117;-1:-1;;;;;86945:54;;90730:35;;90720:2;;90779:1;;90769:12;90795:111;90876:5;84582:13;84575:21;90854:5;90851:32;90841:2;;90897:1;;90887:12;91159:121;91255:1;91248:5;91245:12;91235:2;;91271:1;;91261:12;91287:108;91370:1;91363:5;91360:12;91350:2;;91386:1;;91376:12;91402:119;91496:1;91489:5;91486:12;91476:2;;91512:1;;91502:12;91528:121;91624:1;91617:5;91614:12;91604:2;;91640:1;;91630:12;91784:113;91871:2;91864:5;91861:13;91851:2;;91888:1;;91878:12;91904:113;91991:2;91984:5;91981:13;91971:2;;92008:1;;91998:12;92276:110;92360:2;92353:5;92350:13;92340:2;;92377:1;;92367:12",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"@atpar/actus-solidity/contracts/Engines/CEG/ICEGEngine.sol\";\n\nimport \"../Base/SharedTypes.sol\";\nimport \"../Base/AssetRegistry/BaseRegistry.sol\";\nimport \"./CEGEncoder.sol\";\nimport \"./ICEGRegistry.sol\";\n\n\n/**\n * @title CEGRegistry\n * @notice Registry for ACTUS Protocol assets\n */\ncontract CEGRegistry is BaseRegistry, ICEGRegistry {\n\n    using CEGEncoder for Asset;\n\n    \n    constructor()\n        public\n        BaseRegistry()\n    {}\n\n    /**\n     * @notice\n     * @param assetId id of the asset\n     * @param terms asset specific terms (CEGTerms)\n     * @param state initial state of the asset\n     * @param schedule schedule of the asset\n     * @param ownership ownership of the asset\n     * @param engine ACTUS Engine of the asset\n     * @param actor account which is allowed to update the asset state\n     * @param admin account which as admin rights (optional)\n     */\n    function registerAsset(\n        bytes32 assetId,\n        CEGTerms calldata terms,\n        State calldata state,\n        bytes32[] calldata schedule,\n        AssetOwnership calldata ownership,\n        address engine,\n        address actor,\n        address admin\n    )\n        external\n        override\n        onlyApprovedActors\n    {\n        setAsset(assetId, state, schedule, ownership, engine, actor, admin);\n        assets[assetId].encodeAndSetCEGTerms(terms);\n    }\n\n    /**\n     * @notice Returns the terms of an asset.\n     * @param assetId id of the asset\n     * @return terms of the asset\n     */\n    function getTerms(bytes32 assetId)\n        external\n        view\n        override\n        returns (CEGTerms memory)\n    {\n        return assets[assetId].decodeAndGetCEGTerms();\n    }\n\n    /**\n     * @notice Set the terms of the asset\n     * @dev Can only be set by authorized account.\n     * @param assetId id of the asset\n     * @param terms new terms\n     */\n    function setTerms(bytes32 assetId, CEGTerms calldata terms)\n        external\n        override\n        isAuthorized (assetId)\n    {\n        assets[assetId].encodeAndSetCEGTerms(terms);\n        emit UpdatedTerms(assetId);\n    }\n\n    function getEnumValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (uint8)\n    {\n        return assets[assetId].decodeAndGetEnumValueForCEGAttribute(attribute);\n    }\n\n    function getAddressValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (address)\n    {\n        return assets[assetId].decodeAndGetAddressValueForForCEGAttribute(attribute);\n    }\n\n    function getBytes32ValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (bytes32)\n    {\n        return assets[assetId].decodeAndGetBytes32ValueForForCEGAttribute(attribute);\n    }\n\n    function getUIntValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (uint256)\n    {\n        return assets[assetId].decodeAndGetUIntValueForForCEGAttribute(attribute);\n    }\n\n    function getIntValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (int256)\n    {\n        return assets[assetId].decodeAndGetIntValueForForCEGAttribute(attribute);\n    }\n\n    function getPeriodValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (IP memory)\n    {\n        return assets[assetId].decodeAndGetPeriodValueForForCEGAttribute(attribute);\n    }\n\n    function getCycleValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (IPS memory)\n    {\n        return assets[assetId].decodeAndGetCycleValueForForCEGAttribute(attribute);\n    }\n\n    function getContractReferenceValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (ContractReference memory)\n    {\n        return assets[assetId].decodeAndGetContractReferenceValueForCEGAttribute(attribute);\n    }\n\n    function getNextCyclicEvent(bytes32 assetId)\n        internal\n        view\n        override(TermsRegistry)\n        returns (bytes32)\n    {\n        Asset storage asset = assets[assetId];\n        CEGTerms memory terms = asset.decodeAndGetCEGTerms();\n\n        EventType nextEventType;\n        uint256 nextScheduleTimeOffset;\n\n        // FP\n        {\n            (EventType eventType, uint256 scheduleTimeOffset) = decodeEvent(ICEGEngine(asset.engine).computeNextCyclicEvent(\n                terms,\n                asset.schedule.lastScheduleTimeOfCyclicEvent[EventType.FP],\n                EventType.FP\n            ));\n\n            if (\n                (nextScheduleTimeOffset == 0)\n                || (scheduleTimeOffset < nextScheduleTimeOffset)\n                || (nextScheduleTimeOffset == scheduleTimeOffset && getEpochOffset(eventType) < getEpochOffset(nextEventType))\n            ) {\n                nextScheduleTimeOffset = scheduleTimeOffset;\n                nextEventType = eventType;\n            }        \n        }\n\n        return encodeEvent(nextEventType, nextScheduleTimeOffset);\n    }\n}\n",
  "sourcePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/CEGRegistry.sol",
  "ast": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/CEGRegistry.sol",
    "exportedSymbols": {
      "CEGRegistry": [
        11649
      ]
    },
    "id": 11650,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 11298,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:36"
      },
      {
        "id": 11299,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:36"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/CEG/ICEGEngine.sol",
        "file": "@atpar/actus-solidity/contracts/Engines/CEG/ICEGEngine.sol",
        "id": 11300,
        "nodeType": "ImportDirective",
        "scope": 11650,
        "sourceUnit": 30295,
        "src": "101:68:36",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol",
        "file": "../Base/SharedTypes.sol",
        "id": 11301,
        "nodeType": "ImportDirective",
        "scope": 11650,
        "sourceUnit": 7865,
        "src": "171:33:36",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistry.sol",
        "file": "../Base/AssetRegistry/BaseRegistry.sol",
        "id": 11302,
        "nodeType": "ImportDirective",
        "scope": 11650,
        "sourceUnit": 4422,
        "src": "205:48:36",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/CEGEncoder.sol",
        "file": "./CEGEncoder.sol",
        "id": 11303,
        "nodeType": "ImportDirective",
        "scope": 11650,
        "sourceUnit": 11297,
        "src": "254:26:36",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/ICEGRegistry.sol",
        "file": "./ICEGRegistry.sol",
        "id": 11304,
        "nodeType": "ImportDirective",
        "scope": 11650,
        "sourceUnit": 11692,
        "src": "281:28:36",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11306,
              "name": "BaseRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4421,
              "src": "412:12:36",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseRegistry_$4421",
                "typeString": "contract BaseRegistry"
              }
            },
            "id": 11307,
            "nodeType": "InheritanceSpecifier",
            "src": "412:12:36"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11308,
              "name": "ICEGRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11691,
              "src": "426:12:36",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ICEGRegistry_$11691",
                "typeString": "contract ICEGRegistry"
              }
            },
            "id": 11309,
            "nodeType": "InheritanceSpecifier",
            "src": "426:12:36"
          }
        ],
        "contractDependencies": [
          4083,
          4125,
          4421,
          4478,
          4500,
          4539,
          4579,
          4826,
          4924,
          5716,
          5776,
          6817,
          6894,
          6982,
          11691,
          24758,
          24885,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 11305,
          "nodeType": "StructuredDocumentation",
          "src": "312:75:36",
          "text": " @title CEGRegistry\n @notice Registry for ACTUS Protocol assets"
        },
        "fullyImplemented": true,
        "id": 11649,
        "linearizedBaseContracts": [
          11649,
          11691,
          4500,
          4421,
          4539,
          4826,
          4579,
          5716,
          24885,
          24758,
          4924,
          6817,
          5776,
          6894,
          6982,
          4083,
          4125,
          4478,
          38485,
          38376
        ],
        "name": "CEGRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 11312,
            "libraryName": {
              "contractScope": null,
              "id": 11310,
              "name": "CEGEncoder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11296,
              "src": "452:10:36",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CEGEncoder_$11296",
                "typeString": "library CEGEncoder"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "446:27:36",
            "typeName": {
              "contractScope": null,
              "id": 11311,
              "name": "Asset",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4466,
              "src": "467:5:36",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                "typeString": "struct Asset"
              }
            }
          },
          {
            "body": {
              "id": 11317,
              "nodeType": "Block",
              "src": "540:2:36",
              "statements": []
            },
            "documentation": null,
            "id": 11318,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [],
                "id": 11315,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11314,
                  "name": "BaseRegistry",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4421,
                  "src": "521:12:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseRegistry_$4421_$",
                    "typeString": "type(contract BaseRegistry)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "521:14:36"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11313,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "495:2:36"
            },
            "returnParameters": {
              "id": 11316,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "540:0:36"
            },
            "scope": 11649,
            "src": "484:58:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              11676
            ],
            "body": {
              "id": 11359,
              "nodeType": "Block",
              "src": "1319:137:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11343,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11321,
                        "src": "1338:7:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11344,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11325,
                        "src": "1347:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11345,
                        "name": "schedule",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11328,
                        "src": "1354:8:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11346,
                        "name": "ownership",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11330,
                        "src": "1364:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11347,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11332,
                        "src": "1375:6:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11348,
                        "name": "actor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11334,
                        "src": "1383:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11349,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11336,
                        "src": "1390:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11342,
                      "name": "setAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4324,
                      "src": "1329:8:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_State_$22673_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_struct$_AssetOwnership_$7849_memory_ptr_$_t_address_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,struct State memory,bytes32[] memory,struct AssetOwnership memory,address,address,address)"
                      }
                    },
                    "id": 11350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1329:67:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11351,
                  "nodeType": "ExpressionStatement",
                  "src": "1329:67:36"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11356,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11323,
                        "src": "1443:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                          "typeString": "struct CEGTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                          "typeString": "struct CEGTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11352,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1406:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11354,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11353,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11321,
                          "src": "1413:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1406:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11355,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetCEGTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10225,
                      "src": "1406:36:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_CEGTerms_$22852_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct CEGTerms memory)"
                      }
                    },
                    "id": 11357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1406:43:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11358,
                  "nodeType": "ExpressionStatement",
                  "src": "1406:43:36"
                }
              ]
            },
            "documentation": {
              "id": 11319,
              "nodeType": "StructuredDocumentation",
              "src": "548:434:36",
              "text": " @notice\n @param assetId id of the asset\n @param terms asset specific terms (CEGTerms)\n @param state initial state of the asset\n @param schedule schedule of the asset\n @param ownership ownership of the asset\n @param engine ACTUS Engine of the asset\n @param actor account which is allowed to update the asset state\n @param admin account which as admin rights (optional)"
            },
            "functionSelector": "636701c4",
            "id": 11360,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 11340,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11339,
                  "name": "onlyApprovedActors",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4187,
                  "src": "1296:18:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1296:18:36"
              }
            ],
            "name": "registerAsset",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11338,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1279:8:36"
            },
            "parameters": {
              "id": 11337,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11321,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11360,
                  "src": "1019:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11320,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1019:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11323,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11360,
                  "src": "1044:23:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                    "typeString": "struct CEGTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11322,
                    "name": "CEGTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22852,
                    "src": "1044:8:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CEGTerms_$22852_storage_ptr",
                      "typeString": "struct CEGTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11325,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11360,
                  "src": "1077:20:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11324,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1077:5:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11328,
                  "mutability": "mutable",
                  "name": "schedule",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11360,
                  "src": "1107:27:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11326,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1107:7:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 11327,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1107:9:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11330,
                  "mutability": "mutable",
                  "name": "ownership",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11360,
                  "src": "1144:33:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                    "typeString": "struct AssetOwnership"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11329,
                    "name": "AssetOwnership",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7849,
                    "src": "1144:14:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                      "typeString": "struct AssetOwnership"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11332,
                  "mutability": "mutable",
                  "name": "engine",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11360,
                  "src": "1187:14:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11331,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1187:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11334,
                  "mutability": "mutable",
                  "name": "actor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11360,
                  "src": "1211:13:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11333,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1211:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11336,
                  "mutability": "mutable",
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11360,
                  "src": "1234:13:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11335,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1234:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1009:244:36"
            },
            "returnParameters": {
              "id": 11341,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1319:0:36"
            },
            "scope": 11649,
            "src": "987:469:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              11683
            ],
            "body": {
              "id": 11375,
              "nodeType": "Block",
              "src": "1716:62:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11369,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1733:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11371,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11370,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11363,
                          "src": "1740:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1733:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11372,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCEGTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10697,
                      "src": "1733:36:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_CEGTerms_$22852_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct CEGTerms memory)"
                      }
                    },
                    "id": 11373,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1733:38:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                      "typeString": "struct CEGTerms memory"
                    }
                  },
                  "functionReturnParameters": 11368,
                  "id": 11374,
                  "nodeType": "Return",
                  "src": "1726:45:36"
                }
              ]
            },
            "documentation": {
              "id": 11361,
              "nodeType": "StructuredDocumentation",
              "src": "1462:129:36",
              "text": " @notice Returns the terms of an asset.\n @param assetId id of the asset\n @return terms of the asset"
            },
            "functionSelector": "6be39bda",
            "id": 11376,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11365,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1669:8:36"
            },
            "parameters": {
              "id": 11364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11363,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11376,
                  "src": "1614:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11362,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1614:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1613:17:36"
            },
            "returnParameters": {
              "id": 11368,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11367,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11376,
                  "src": "1695:15:36",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                    "typeString": "struct CEGTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11366,
                    "name": "CEGTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22852,
                    "src": "1695:8:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CEGTerms_$22852_storage_ptr",
                      "typeString": "struct CEGTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1694:17:36"
            },
            "scope": 11649,
            "src": "1596:182:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              11690
            ],
            "body": {
              "id": 11399,
              "nodeType": "Block",
              "src": "2090:96:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11392,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11381,
                        "src": "2137:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                          "typeString": "struct CEGTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                          "typeString": "struct CEGTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11388,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2100:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11390,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11389,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11379,
                          "src": "2107:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2100:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11391,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetCEGTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10225,
                      "src": "2100:36:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_CEGTerms_$22852_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct CEGTerms memory)"
                      }
                    },
                    "id": 11393,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2100:43:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11394,
                  "nodeType": "ExpressionStatement",
                  "src": "2100:43:36"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11396,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11379,
                        "src": "2171:7:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 11395,
                      "name": "UpdatedTerms",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6902,
                      "src": "2158:12:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 11397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2158:21:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11398,
                  "nodeType": "EmitStatement",
                  "src": "2153:26:36"
                }
              ]
            },
            "documentation": {
              "id": 11377,
              "nodeType": "StructuredDocumentation",
              "src": "1784:172:36",
              "text": " @notice Set the terms of the asset\n @dev Can only be set by authorized account.\n @param assetId id of the asset\n @param terms new terms"
            },
            "functionSelector": "def6a06f",
            "id": 11400,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11385,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11379,
                    "src": "2077:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 11386,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11384,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "2063:12:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2063:22:36"
              }
            ],
            "name": "setTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11383,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2046:8:36"
            },
            "parameters": {
              "id": 11382,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11379,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11400,
                  "src": "1979:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11378,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1979:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11381,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11400,
                  "src": "1996:23:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                    "typeString": "struct CEGTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11380,
                    "name": "CEGTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22852,
                    "src": "1996:8:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CEGTerms_$22852_storage_ptr",
                      "typeString": "struct CEGTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1978:42:36"
            },
            "returnParameters": {
              "id": 11387,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2090:0:36"
            },
            "scope": 11649,
            "src": "1961:225:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6830,
              6911
            ],
            "body": {
              "id": 11419,
              "nodeType": "Block",
              "src": "2371:87:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11416,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11404,
                        "src": "2441:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11412,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2388:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11414,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11413,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11402,
                          "src": "2395:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2388:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11415,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetEnumValueForCEGAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10878,
                      "src": "2388:52:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint8_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint8)"
                      }
                    },
                    "id": 11417,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2388:63:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 11411,
                  "id": 11418,
                  "nodeType": "Return",
                  "src": "2381:70:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "ecef5577",
            "id": 11420,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEnumValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11408,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 11406,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2312:14:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 11407,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2328:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2303:39:36"
            },
            "parameters": {
              "id": 11405,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11402,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11420,
                  "src": "2231:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11401,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2231:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11404,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11420,
                  "src": "2248:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11403,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2248:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2230:36:36"
            },
            "returnParameters": {
              "id": 11411,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11410,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11420,
                  "src": "2360:5:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 11409,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2360:5:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2359:7:36"
            },
            "scope": 11649,
            "src": "2192:266:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6839,
              6920
            ],
            "body": {
              "id": 11439,
              "nodeType": "Block",
              "src": "2648:93:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11436,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11424,
                        "src": "2724:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11432,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2665:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11434,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11433,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11422,
                          "src": "2672:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2665:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11435,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetAddressValueForForCEGAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10942,
                      "src": "2665:58:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_address_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (address)"
                      }
                    },
                    "id": 11437,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2665:69:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 11431,
                  "id": 11438,
                  "nodeType": "Return",
                  "src": "2658:76:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "eb012559",
            "id": 11440,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAddressValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11428,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 11426,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2587:14:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 11427,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2603:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2578:39:36"
            },
            "parameters": {
              "id": 11425,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11422,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11440,
                  "src": "2506:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11421,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2506:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11424,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11440,
                  "src": "2523:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11423,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2523:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2505:36:36"
            },
            "returnParameters": {
              "id": 11431,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11430,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11440,
                  "src": "2635:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11429,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2635:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2634:9:36"
            },
            "scope": 11649,
            "src": "2464:277:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6848,
              6929
            ],
            "body": {
              "id": 11459,
              "nodeType": "Block",
              "src": "2931:93:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11456,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11444,
                        "src": "3007:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11452,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2948:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11454,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11453,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11442,
                          "src": "2955:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2948:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11455,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetBytes32ValueForForCEGAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10957,
                      "src": "2948:58:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (bytes32)"
                      }
                    },
                    "id": 11457,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2948:69:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 11451,
                  "id": 11458,
                  "nodeType": "Return",
                  "src": "2941:76:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "d51dc3dc",
            "id": 11460,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBytes32ValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11448,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 11446,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2870:14:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 11447,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2886:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2861:39:36"
            },
            "parameters": {
              "id": 11445,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11442,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11460,
                  "src": "2789:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11441,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2789:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11444,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11460,
                  "src": "2806:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11443,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2806:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2788:36:36"
            },
            "returnParameters": {
              "id": 11451,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11450,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11460,
                  "src": "2918:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11449,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2918:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2917:9:36"
            },
            "scope": 11649,
            "src": "2747:277:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6857,
              6938
            ],
            "body": {
              "id": 11479,
              "nodeType": "Block",
              "src": "3211:90:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11476,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11464,
                        "src": "3284:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11472,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3228:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11474,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11473,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11462,
                          "src": "3235:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3228:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11475,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetUIntValueForForCEGAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10975,
                      "src": "3228:55:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint256)"
                      }
                    },
                    "id": 11477,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3228:66:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 11471,
                  "id": 11478,
                  "nodeType": "Return",
                  "src": "3221:73:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "135b9f4d",
            "id": 11480,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11468,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 11466,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3150:14:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 11467,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3166:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3141:39:36"
            },
            "parameters": {
              "id": 11465,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11462,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11480,
                  "src": "3069:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11461,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3069:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11464,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11480,
                  "src": "3086:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11463,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3086:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3068:36:36"
            },
            "returnParameters": {
              "id": 11471,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11470,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11480,
                  "src": "3198:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11469,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3198:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3197:9:36"
            },
            "scope": 11649,
            "src": "3030:271:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6866,
              6947
            ],
            "body": {
              "id": 11499,
              "nodeType": "Block",
              "src": "3486:89:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11496,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11484,
                        "src": "3558:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11492,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3503:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11494,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11493,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11482,
                          "src": "3510:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3503:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11495,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetIntValueForForCEGAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10993,
                      "src": "3503:54:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_int256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (int256)"
                      }
                    },
                    "id": 11497,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3503:65:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 11491,
                  "id": 11498,
                  "nodeType": "Return",
                  "src": "3496:72:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b461dd4f",
            "id": 11500,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11488,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 11486,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3426:14:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 11487,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3442:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3417:39:36"
            },
            "parameters": {
              "id": 11485,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11482,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11500,
                  "src": "3345:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11481,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3345:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11484,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11500,
                  "src": "3362:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11483,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3362:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3344:36:36"
            },
            "returnParameters": {
              "id": 11491,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11490,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11500,
                  "src": "3474:6:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 11489,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3474:6:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3473:8:36"
            },
            "scope": 11649,
            "src": "3307:268:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6875,
              6956
            ],
            "body": {
              "id": 11519,
              "nodeType": "Block",
              "src": "3766:92:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11516,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11504,
                        "src": "3841:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11512,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3783:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11514,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11513,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11502,
                          "src": "3790:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3783:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11515,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetPeriodValueForForCEGAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11079,
                      "src": "3783:57:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_IP_$22493_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct IP memory)"
                      }
                    },
                    "id": 11517,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3783:68:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                      "typeString": "struct IP memory"
                    }
                  },
                  "functionReturnParameters": 11511,
                  "id": 11518,
                  "nodeType": "Return",
                  "src": "3776:75:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "6fe55baa",
            "id": 11520,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPeriodValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11508,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 11506,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3703:14:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 11507,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3719:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3694:39:36"
            },
            "parameters": {
              "id": 11505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11502,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11520,
                  "src": "3622:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11501,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3622:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11504,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11520,
                  "src": "3639:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11503,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3639:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3621:36:36"
            },
            "returnParameters": {
              "id": 11511,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11510,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11520,
                  "src": "3751:9:36",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                    "typeString": "struct IP"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11509,
                    "name": "IP",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22493,
                    "src": "3751:2:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_storage_ptr",
                      "typeString": "struct IP"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3750:11:36"
            },
            "scope": 11649,
            "src": "3581:277:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6884,
              6965
            ],
            "body": {
              "id": 11539,
              "nodeType": "Block",
              "src": "4049:91:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11536,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11524,
                        "src": "4123:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11532,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "4066:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11534,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11533,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11522,
                          "src": "4073:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4066:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11535,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCycleValueForForCEGAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11173,
                      "src": "4066:56:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_IPS_$22486_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct IPS memory)"
                      }
                    },
                    "id": 11537,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4066:67:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                      "typeString": "struct IPS memory"
                    }
                  },
                  "functionReturnParameters": 11531,
                  "id": 11538,
                  "nodeType": "Return",
                  "src": "4059:74:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b0b4888f",
            "id": 11540,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCycleValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11528,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 11526,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3985:14:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 11527,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4001:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3976:39:36"
            },
            "parameters": {
              "id": 11525,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11522,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11540,
                  "src": "3904:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11521,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3904:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11524,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11540,
                  "src": "3921:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11523,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3921:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3903:36:36"
            },
            "returnParameters": {
              "id": 11531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11530,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11540,
                  "src": "4033:10:36",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                    "typeString": "struct IPS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11529,
                    "name": "IPS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22486,
                    "src": "4033:3:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_storage_ptr",
                      "typeString": "struct IPS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4032:12:36"
            },
            "scope": 11649,
            "src": "3864:276:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6893,
              6974
            ],
            "body": {
              "id": 11559,
              "nodeType": "Block",
              "src": "4357:100:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11556,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11544,
                        "src": "4440:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11552,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "4374:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11554,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11553,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11542,
                          "src": "4381:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4374:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11555,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetContractReferenceValueForCEGAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11295,
                      "src": "4374:65:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_ContractReference_$22632_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct ContractReference memory)"
                      }
                    },
                    "id": 11557,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4374:76:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                      "typeString": "struct ContractReference memory"
                    }
                  },
                  "functionReturnParameters": 11551,
                  "id": 11558,
                  "nodeType": "Return",
                  "src": "4367:83:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "bc6a7d76",
            "id": 11560,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getContractReferenceValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11548,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 11546,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "4279:14:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 11547,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4295:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4270:39:36"
            },
            "parameters": {
              "id": 11545,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11542,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11560,
                  "src": "4198:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11541,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4198:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11544,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11560,
                  "src": "4215:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11543,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4215:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4197:36:36"
            },
            "returnParameters": {
              "id": 11551,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11550,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11560,
                  "src": "4327:24:36",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                    "typeString": "struct ContractReference"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11549,
                    "name": "ContractReference",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22632,
                    "src": "4327:17:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                      "typeString": "struct ContractReference"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4326:26:36"
            },
            "scope": 11649,
            "src": "4146:311:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6981
            ],
            "body": {
              "id": 11647,
              "nodeType": "Block",
              "src": "4600:960:36",
              "statements": [
                {
                  "assignments": [
                    11570
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11570,
                      "mutability": "mutable",
                      "name": "asset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11647,
                      "src": "4610:19:36",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                        "typeString": "struct Asset"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11569,
                        "name": "Asset",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4466,
                        "src": "4610:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11574,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11571,
                      "name": "assets",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4477,
                      "src": "4632:6:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                        "typeString": "mapping(bytes32 => struct Asset storage ref)"
                      }
                    },
                    "id": 11573,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11572,
                      "name": "assetId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11562,
                      "src": "4639:7:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4632:15:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Asset_$4466_storage",
                      "typeString": "struct Asset storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4610:37:36"
                },
                {
                  "assignments": [
                    11576
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11576,
                      "mutability": "mutable",
                      "name": "terms",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11647,
                      "src": "4657:21:36",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                        "typeString": "struct CEGTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11575,
                        "name": "CEGTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22852,
                        "src": "4657:8:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_storage_ptr",
                          "typeString": "struct CEGTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11580,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11577,
                        "name": "asset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11570,
                        "src": "4681:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset storage pointer"
                        }
                      },
                      "id": 11578,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCEGTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10697,
                      "src": "4681:26:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_CEGTerms_$22852_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct CEGTerms memory)"
                      }
                    },
                    "id": 11579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4681:28:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                      "typeString": "struct CEGTerms memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4657:52:36"
                },
                {
                  "assignments": [
                    11582
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11582,
                      "mutability": "mutable",
                      "name": "nextEventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11647,
                      "src": "4720:23:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11581,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "4720:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11583,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4720:23:36"
                },
                {
                  "assignments": [
                    11585
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11585,
                      "mutability": "mutable",
                      "name": "nextScheduleTimeOffset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11647,
                      "src": "4753:30:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11584,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4753:7:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11586,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4753:30:36"
                },
                {
                  "id": 11641,
                  "nodeType": "Block",
                  "src": "4808:678:36",
                  "statements": [
                    {
                      "assignments": [
                        11588,
                        11590
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 11588,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11641,
                          "src": "4823:19:36",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 11587,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "4823:9:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 11590,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11641,
                          "src": "4844:26:36",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 11589,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4844:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 11608,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11597,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11576,
                                "src": "4951:5:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                                  "typeString": "struct CEGTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11598,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11570,
                                      "src": "4974:5:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 11599,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "4974:14:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 11600,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "4974:44:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 11603,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11601,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "5019:9:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 11602,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "FP",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5019:12:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4974:58:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11604,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "5050:9:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 11605,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "FP",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5050:12:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                                  "typeString": "struct CEGTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11593,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11570,
                                      "src": "4897:5:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 11594,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "4897:12:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 11592,
                                  "name": "ICEGEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30294,
                                  "src": "4886:10:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ICEGEngine_$30294_$",
                                    "typeString": "type(contract ICEGEngine)"
                                  }
                                },
                                "id": 11595,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4886:24:36",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ICEGEngine_$30294",
                                  "typeString": "contract ICEGEngine"
                                }
                              },
                              "id": 11596,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30277,
                              "src": "4886:47:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_CEGTerms_$22852_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct CEGTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 11606,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4886:190:36",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 11591,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "4874:11:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 11607,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4874:203:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4822:255:36"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 11630,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 11617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11611,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 11609,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11585,
                                  "src": "5114:22:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 11610,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5140:1:36",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5114:27:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 11612,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5113:29:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11615,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 11613,
                                  "name": "scheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11590,
                                  "src": "5163:18:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 11614,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11585,
                                  "src": "5184:22:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5163:43:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 11616,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5162:45:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5113:94:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 11628,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11620,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 11618,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11585,
                                  "src": "5228:22:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 11619,
                                  "name": "scheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11590,
                                  "src": "5254:18:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5228:44:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11627,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 11622,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11588,
                                      "src": "5291:9:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 11621,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "5276:14:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 11623,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5276:25:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 11625,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11582,
                                      "src": "5319:13:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 11624,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "5304:14:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 11626,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5304:29:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5276:57:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5228:105:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 11629,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5227:107:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5113:221:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 11640,
                      "nodeType": "IfStatement",
                      "src": "5092:376:36",
                      "trueBody": {
                        "id": 11639,
                        "nodeType": "Block",
                        "src": "5349:119:36",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 11633,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 11631,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11585,
                                "src": "5367:22:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 11632,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11590,
                                "src": "5392:18:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5367:43:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 11634,
                            "nodeType": "ExpressionStatement",
                            "src": "5367:43:36"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 11637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 11635,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11582,
                                "src": "5428:13:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 11636,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11588,
                                "src": "5444:9:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "5428:25:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 11638,
                            "nodeType": "ExpressionStatement",
                            "src": "5428:25:36"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11643,
                        "name": "nextEventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11582,
                        "src": "5515:13:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11644,
                        "name": "nextScheduleTimeOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11585,
                        "src": "5530:22:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11642,
                      "name": "encodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24702,
                      "src": "5503:11:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                        "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                      }
                    },
                    "id": 11645,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5503:50:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 11568,
                  "id": 11646,
                  "nodeType": "Return",
                  "src": "5496:57:36"
                }
              ]
            },
            "documentation": null,
            "id": 11648,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNextCyclicEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11565,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 11564,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4555:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4546:23:36"
            },
            "parameters": {
              "id": 11563,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11562,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11648,
                  "src": "4491:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11561,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4491:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4490:17:36"
            },
            "returnParameters": {
              "id": 11568,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11567,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11648,
                  "src": "4587:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11566,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4587:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4586:9:36"
            },
            "scope": 11649,
            "src": "4463:1097:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 11650,
        "src": "388:5174:36"
      }
    ],
    "src": "41:5522:36"
  },
  "legacyAST": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/CEGRegistry.sol",
    "exportedSymbols": {
      "CEGRegistry": [
        11649
      ]
    },
    "id": 11650,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 11298,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:36"
      },
      {
        "id": 11299,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:36"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/CEG/ICEGEngine.sol",
        "file": "@atpar/actus-solidity/contracts/Engines/CEG/ICEGEngine.sol",
        "id": 11300,
        "nodeType": "ImportDirective",
        "scope": 11650,
        "sourceUnit": 30295,
        "src": "101:68:36",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol",
        "file": "../Base/SharedTypes.sol",
        "id": 11301,
        "nodeType": "ImportDirective",
        "scope": 11650,
        "sourceUnit": 7865,
        "src": "171:33:36",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistry.sol",
        "file": "../Base/AssetRegistry/BaseRegistry.sol",
        "id": 11302,
        "nodeType": "ImportDirective",
        "scope": 11650,
        "sourceUnit": 4422,
        "src": "205:48:36",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/CEGEncoder.sol",
        "file": "./CEGEncoder.sol",
        "id": 11303,
        "nodeType": "ImportDirective",
        "scope": 11650,
        "sourceUnit": 11297,
        "src": "254:26:36",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/ICEGRegistry.sol",
        "file": "./ICEGRegistry.sol",
        "id": 11304,
        "nodeType": "ImportDirective",
        "scope": 11650,
        "sourceUnit": 11692,
        "src": "281:28:36",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11306,
              "name": "BaseRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4421,
              "src": "412:12:36",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseRegistry_$4421",
                "typeString": "contract BaseRegistry"
              }
            },
            "id": 11307,
            "nodeType": "InheritanceSpecifier",
            "src": "412:12:36"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11308,
              "name": "ICEGRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11691,
              "src": "426:12:36",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ICEGRegistry_$11691",
                "typeString": "contract ICEGRegistry"
              }
            },
            "id": 11309,
            "nodeType": "InheritanceSpecifier",
            "src": "426:12:36"
          }
        ],
        "contractDependencies": [
          4083,
          4125,
          4421,
          4478,
          4500,
          4539,
          4579,
          4826,
          4924,
          5716,
          5776,
          6817,
          6894,
          6982,
          11691,
          24758,
          24885,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 11305,
          "nodeType": "StructuredDocumentation",
          "src": "312:75:36",
          "text": " @title CEGRegistry\n @notice Registry for ACTUS Protocol assets"
        },
        "fullyImplemented": true,
        "id": 11649,
        "linearizedBaseContracts": [
          11649,
          11691,
          4500,
          4421,
          4539,
          4826,
          4579,
          5716,
          24885,
          24758,
          4924,
          6817,
          5776,
          6894,
          6982,
          4083,
          4125,
          4478,
          38485,
          38376
        ],
        "name": "CEGRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 11312,
            "libraryName": {
              "contractScope": null,
              "id": 11310,
              "name": "CEGEncoder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11296,
              "src": "452:10:36",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CEGEncoder_$11296",
                "typeString": "library CEGEncoder"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "446:27:36",
            "typeName": {
              "contractScope": null,
              "id": 11311,
              "name": "Asset",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4466,
              "src": "467:5:36",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                "typeString": "struct Asset"
              }
            }
          },
          {
            "body": {
              "id": 11317,
              "nodeType": "Block",
              "src": "540:2:36",
              "statements": []
            },
            "documentation": null,
            "id": 11318,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [],
                "id": 11315,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11314,
                  "name": "BaseRegistry",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4421,
                  "src": "521:12:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseRegistry_$4421_$",
                    "typeString": "type(contract BaseRegistry)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "521:14:36"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11313,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "495:2:36"
            },
            "returnParameters": {
              "id": 11316,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "540:0:36"
            },
            "scope": 11649,
            "src": "484:58:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              11676
            ],
            "body": {
              "id": 11359,
              "nodeType": "Block",
              "src": "1319:137:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11343,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11321,
                        "src": "1338:7:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11344,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11325,
                        "src": "1347:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11345,
                        "name": "schedule",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11328,
                        "src": "1354:8:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11346,
                        "name": "ownership",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11330,
                        "src": "1364:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11347,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11332,
                        "src": "1375:6:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11348,
                        "name": "actor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11334,
                        "src": "1383:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11349,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11336,
                        "src": "1390:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11342,
                      "name": "setAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4324,
                      "src": "1329:8:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_State_$22673_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_struct$_AssetOwnership_$7849_memory_ptr_$_t_address_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,struct State memory,bytes32[] memory,struct AssetOwnership memory,address,address,address)"
                      }
                    },
                    "id": 11350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1329:67:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11351,
                  "nodeType": "ExpressionStatement",
                  "src": "1329:67:36"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11356,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11323,
                        "src": "1443:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                          "typeString": "struct CEGTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                          "typeString": "struct CEGTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11352,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1406:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11354,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11353,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11321,
                          "src": "1413:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1406:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11355,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetCEGTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10225,
                      "src": "1406:36:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_CEGTerms_$22852_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct CEGTerms memory)"
                      }
                    },
                    "id": 11357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1406:43:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11358,
                  "nodeType": "ExpressionStatement",
                  "src": "1406:43:36"
                }
              ]
            },
            "documentation": {
              "id": 11319,
              "nodeType": "StructuredDocumentation",
              "src": "548:434:36",
              "text": " @notice\n @param assetId id of the asset\n @param terms asset specific terms (CEGTerms)\n @param state initial state of the asset\n @param schedule schedule of the asset\n @param ownership ownership of the asset\n @param engine ACTUS Engine of the asset\n @param actor account which is allowed to update the asset state\n @param admin account which as admin rights (optional)"
            },
            "functionSelector": "636701c4",
            "id": 11360,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 11340,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11339,
                  "name": "onlyApprovedActors",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4187,
                  "src": "1296:18:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1296:18:36"
              }
            ],
            "name": "registerAsset",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11338,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1279:8:36"
            },
            "parameters": {
              "id": 11337,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11321,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11360,
                  "src": "1019:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11320,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1019:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11323,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11360,
                  "src": "1044:23:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                    "typeString": "struct CEGTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11322,
                    "name": "CEGTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22852,
                    "src": "1044:8:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CEGTerms_$22852_storage_ptr",
                      "typeString": "struct CEGTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11325,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11360,
                  "src": "1077:20:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11324,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1077:5:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11328,
                  "mutability": "mutable",
                  "name": "schedule",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11360,
                  "src": "1107:27:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11326,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1107:7:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 11327,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1107:9:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11330,
                  "mutability": "mutable",
                  "name": "ownership",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11360,
                  "src": "1144:33:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                    "typeString": "struct AssetOwnership"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11329,
                    "name": "AssetOwnership",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7849,
                    "src": "1144:14:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                      "typeString": "struct AssetOwnership"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11332,
                  "mutability": "mutable",
                  "name": "engine",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11360,
                  "src": "1187:14:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11331,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1187:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11334,
                  "mutability": "mutable",
                  "name": "actor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11360,
                  "src": "1211:13:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11333,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1211:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11336,
                  "mutability": "mutable",
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11360,
                  "src": "1234:13:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11335,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1234:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1009:244:36"
            },
            "returnParameters": {
              "id": 11341,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1319:0:36"
            },
            "scope": 11649,
            "src": "987:469:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              11683
            ],
            "body": {
              "id": 11375,
              "nodeType": "Block",
              "src": "1716:62:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11369,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1733:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11371,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11370,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11363,
                          "src": "1740:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1733:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11372,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCEGTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10697,
                      "src": "1733:36:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_CEGTerms_$22852_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct CEGTerms memory)"
                      }
                    },
                    "id": 11373,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1733:38:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                      "typeString": "struct CEGTerms memory"
                    }
                  },
                  "functionReturnParameters": 11368,
                  "id": 11374,
                  "nodeType": "Return",
                  "src": "1726:45:36"
                }
              ]
            },
            "documentation": {
              "id": 11361,
              "nodeType": "StructuredDocumentation",
              "src": "1462:129:36",
              "text": " @notice Returns the terms of an asset.\n @param assetId id of the asset\n @return terms of the asset"
            },
            "functionSelector": "6be39bda",
            "id": 11376,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11365,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1669:8:36"
            },
            "parameters": {
              "id": 11364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11363,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11376,
                  "src": "1614:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11362,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1614:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1613:17:36"
            },
            "returnParameters": {
              "id": 11368,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11367,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11376,
                  "src": "1695:15:36",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                    "typeString": "struct CEGTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11366,
                    "name": "CEGTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22852,
                    "src": "1695:8:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CEGTerms_$22852_storage_ptr",
                      "typeString": "struct CEGTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1694:17:36"
            },
            "scope": 11649,
            "src": "1596:182:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              11690
            ],
            "body": {
              "id": 11399,
              "nodeType": "Block",
              "src": "2090:96:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11392,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11381,
                        "src": "2137:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                          "typeString": "struct CEGTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                          "typeString": "struct CEGTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11388,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2100:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11390,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11389,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11379,
                          "src": "2107:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2100:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11391,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetCEGTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10225,
                      "src": "2100:36:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_CEGTerms_$22852_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct CEGTerms memory)"
                      }
                    },
                    "id": 11393,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2100:43:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11394,
                  "nodeType": "ExpressionStatement",
                  "src": "2100:43:36"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11396,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11379,
                        "src": "2171:7:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 11395,
                      "name": "UpdatedTerms",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6902,
                      "src": "2158:12:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 11397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2158:21:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11398,
                  "nodeType": "EmitStatement",
                  "src": "2153:26:36"
                }
              ]
            },
            "documentation": {
              "id": 11377,
              "nodeType": "StructuredDocumentation",
              "src": "1784:172:36",
              "text": " @notice Set the terms of the asset\n @dev Can only be set by authorized account.\n @param assetId id of the asset\n @param terms new terms"
            },
            "functionSelector": "def6a06f",
            "id": 11400,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11385,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11379,
                    "src": "2077:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 11386,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11384,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "2063:12:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2063:22:36"
              }
            ],
            "name": "setTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11383,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2046:8:36"
            },
            "parameters": {
              "id": 11382,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11379,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11400,
                  "src": "1979:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11378,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1979:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11381,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11400,
                  "src": "1996:23:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                    "typeString": "struct CEGTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11380,
                    "name": "CEGTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22852,
                    "src": "1996:8:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CEGTerms_$22852_storage_ptr",
                      "typeString": "struct CEGTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1978:42:36"
            },
            "returnParameters": {
              "id": 11387,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2090:0:36"
            },
            "scope": 11649,
            "src": "1961:225:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6830,
              6911
            ],
            "body": {
              "id": 11419,
              "nodeType": "Block",
              "src": "2371:87:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11416,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11404,
                        "src": "2441:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11412,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2388:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11414,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11413,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11402,
                          "src": "2395:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2388:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11415,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetEnumValueForCEGAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10878,
                      "src": "2388:52:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint8_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint8)"
                      }
                    },
                    "id": 11417,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2388:63:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 11411,
                  "id": 11418,
                  "nodeType": "Return",
                  "src": "2381:70:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "ecef5577",
            "id": 11420,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEnumValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11408,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 11406,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2312:14:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 11407,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2328:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2303:39:36"
            },
            "parameters": {
              "id": 11405,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11402,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11420,
                  "src": "2231:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11401,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2231:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11404,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11420,
                  "src": "2248:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11403,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2248:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2230:36:36"
            },
            "returnParameters": {
              "id": 11411,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11410,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11420,
                  "src": "2360:5:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 11409,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2360:5:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2359:7:36"
            },
            "scope": 11649,
            "src": "2192:266:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6839,
              6920
            ],
            "body": {
              "id": 11439,
              "nodeType": "Block",
              "src": "2648:93:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11436,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11424,
                        "src": "2724:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11432,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2665:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11434,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11433,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11422,
                          "src": "2672:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2665:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11435,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetAddressValueForForCEGAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10942,
                      "src": "2665:58:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_address_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (address)"
                      }
                    },
                    "id": 11437,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2665:69:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 11431,
                  "id": 11438,
                  "nodeType": "Return",
                  "src": "2658:76:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "eb012559",
            "id": 11440,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAddressValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11428,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 11426,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2587:14:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 11427,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2603:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2578:39:36"
            },
            "parameters": {
              "id": 11425,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11422,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11440,
                  "src": "2506:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11421,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2506:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11424,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11440,
                  "src": "2523:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11423,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2523:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2505:36:36"
            },
            "returnParameters": {
              "id": 11431,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11430,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11440,
                  "src": "2635:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11429,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2635:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2634:9:36"
            },
            "scope": 11649,
            "src": "2464:277:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6848,
              6929
            ],
            "body": {
              "id": 11459,
              "nodeType": "Block",
              "src": "2931:93:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11456,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11444,
                        "src": "3007:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11452,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2948:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11454,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11453,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11442,
                          "src": "2955:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2948:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11455,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetBytes32ValueForForCEGAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10957,
                      "src": "2948:58:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (bytes32)"
                      }
                    },
                    "id": 11457,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2948:69:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 11451,
                  "id": 11458,
                  "nodeType": "Return",
                  "src": "2941:76:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "d51dc3dc",
            "id": 11460,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBytes32ValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11448,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 11446,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2870:14:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 11447,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2886:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2861:39:36"
            },
            "parameters": {
              "id": 11445,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11442,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11460,
                  "src": "2789:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11441,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2789:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11444,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11460,
                  "src": "2806:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11443,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2806:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2788:36:36"
            },
            "returnParameters": {
              "id": 11451,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11450,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11460,
                  "src": "2918:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11449,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2918:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2917:9:36"
            },
            "scope": 11649,
            "src": "2747:277:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6857,
              6938
            ],
            "body": {
              "id": 11479,
              "nodeType": "Block",
              "src": "3211:90:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11476,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11464,
                        "src": "3284:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11472,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3228:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11474,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11473,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11462,
                          "src": "3235:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3228:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11475,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetUIntValueForForCEGAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10975,
                      "src": "3228:55:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint256)"
                      }
                    },
                    "id": 11477,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3228:66:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 11471,
                  "id": 11478,
                  "nodeType": "Return",
                  "src": "3221:73:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "135b9f4d",
            "id": 11480,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11468,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 11466,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3150:14:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 11467,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3166:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3141:39:36"
            },
            "parameters": {
              "id": 11465,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11462,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11480,
                  "src": "3069:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11461,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3069:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11464,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11480,
                  "src": "3086:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11463,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3086:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3068:36:36"
            },
            "returnParameters": {
              "id": 11471,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11470,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11480,
                  "src": "3198:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11469,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3198:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3197:9:36"
            },
            "scope": 11649,
            "src": "3030:271:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6866,
              6947
            ],
            "body": {
              "id": 11499,
              "nodeType": "Block",
              "src": "3486:89:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11496,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11484,
                        "src": "3558:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11492,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3503:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11494,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11493,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11482,
                          "src": "3510:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3503:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11495,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetIntValueForForCEGAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10993,
                      "src": "3503:54:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_int256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (int256)"
                      }
                    },
                    "id": 11497,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3503:65:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 11491,
                  "id": 11498,
                  "nodeType": "Return",
                  "src": "3496:72:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b461dd4f",
            "id": 11500,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11488,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 11486,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3426:14:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 11487,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3442:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3417:39:36"
            },
            "parameters": {
              "id": 11485,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11482,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11500,
                  "src": "3345:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11481,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3345:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11484,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11500,
                  "src": "3362:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11483,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3362:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3344:36:36"
            },
            "returnParameters": {
              "id": 11491,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11490,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11500,
                  "src": "3474:6:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 11489,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3474:6:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3473:8:36"
            },
            "scope": 11649,
            "src": "3307:268:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6875,
              6956
            ],
            "body": {
              "id": 11519,
              "nodeType": "Block",
              "src": "3766:92:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11516,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11504,
                        "src": "3841:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11512,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3783:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11514,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11513,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11502,
                          "src": "3790:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3783:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11515,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetPeriodValueForForCEGAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11079,
                      "src": "3783:57:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_IP_$22493_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct IP memory)"
                      }
                    },
                    "id": 11517,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3783:68:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                      "typeString": "struct IP memory"
                    }
                  },
                  "functionReturnParameters": 11511,
                  "id": 11518,
                  "nodeType": "Return",
                  "src": "3776:75:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "6fe55baa",
            "id": 11520,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPeriodValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11508,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 11506,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3703:14:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 11507,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3719:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3694:39:36"
            },
            "parameters": {
              "id": 11505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11502,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11520,
                  "src": "3622:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11501,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3622:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11504,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11520,
                  "src": "3639:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11503,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3639:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3621:36:36"
            },
            "returnParameters": {
              "id": 11511,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11510,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11520,
                  "src": "3751:9:36",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                    "typeString": "struct IP"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11509,
                    "name": "IP",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22493,
                    "src": "3751:2:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_storage_ptr",
                      "typeString": "struct IP"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3750:11:36"
            },
            "scope": 11649,
            "src": "3581:277:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6884,
              6965
            ],
            "body": {
              "id": 11539,
              "nodeType": "Block",
              "src": "4049:91:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11536,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11524,
                        "src": "4123:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11532,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "4066:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11534,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11533,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11522,
                          "src": "4073:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4066:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11535,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCycleValueForForCEGAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11173,
                      "src": "4066:56:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_IPS_$22486_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct IPS memory)"
                      }
                    },
                    "id": 11537,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4066:67:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                      "typeString": "struct IPS memory"
                    }
                  },
                  "functionReturnParameters": 11531,
                  "id": 11538,
                  "nodeType": "Return",
                  "src": "4059:74:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b0b4888f",
            "id": 11540,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCycleValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11528,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 11526,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3985:14:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 11527,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4001:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3976:39:36"
            },
            "parameters": {
              "id": 11525,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11522,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11540,
                  "src": "3904:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11521,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3904:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11524,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11540,
                  "src": "3921:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11523,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3921:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3903:36:36"
            },
            "returnParameters": {
              "id": 11531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11530,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11540,
                  "src": "4033:10:36",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                    "typeString": "struct IPS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11529,
                    "name": "IPS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22486,
                    "src": "4033:3:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_storage_ptr",
                      "typeString": "struct IPS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4032:12:36"
            },
            "scope": 11649,
            "src": "3864:276:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6893,
              6974
            ],
            "body": {
              "id": 11559,
              "nodeType": "Block",
              "src": "4357:100:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11556,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11544,
                        "src": "4440:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11552,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "4374:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 11554,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11553,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11542,
                          "src": "4381:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4374:15:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 11555,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetContractReferenceValueForCEGAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11295,
                      "src": "4374:65:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_ContractReference_$22632_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct ContractReference memory)"
                      }
                    },
                    "id": 11557,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4374:76:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                      "typeString": "struct ContractReference memory"
                    }
                  },
                  "functionReturnParameters": 11551,
                  "id": 11558,
                  "nodeType": "Return",
                  "src": "4367:83:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "bc6a7d76",
            "id": 11560,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getContractReferenceValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11548,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 11546,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "4279:14:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 11547,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4295:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4270:39:36"
            },
            "parameters": {
              "id": 11545,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11542,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11560,
                  "src": "4198:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11541,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4198:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11544,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11560,
                  "src": "4215:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11543,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4215:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4197:36:36"
            },
            "returnParameters": {
              "id": 11551,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11550,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11560,
                  "src": "4327:24:36",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                    "typeString": "struct ContractReference"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11549,
                    "name": "ContractReference",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22632,
                    "src": "4327:17:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                      "typeString": "struct ContractReference"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4326:26:36"
            },
            "scope": 11649,
            "src": "4146:311:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6981
            ],
            "body": {
              "id": 11647,
              "nodeType": "Block",
              "src": "4600:960:36",
              "statements": [
                {
                  "assignments": [
                    11570
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11570,
                      "mutability": "mutable",
                      "name": "asset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11647,
                      "src": "4610:19:36",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                        "typeString": "struct Asset"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11569,
                        "name": "Asset",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4466,
                        "src": "4610:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11574,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11571,
                      "name": "assets",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4477,
                      "src": "4632:6:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                        "typeString": "mapping(bytes32 => struct Asset storage ref)"
                      }
                    },
                    "id": 11573,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11572,
                      "name": "assetId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11562,
                      "src": "4639:7:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4632:15:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Asset_$4466_storage",
                      "typeString": "struct Asset storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4610:37:36"
                },
                {
                  "assignments": [
                    11576
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11576,
                      "mutability": "mutable",
                      "name": "terms",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11647,
                      "src": "4657:21:36",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                        "typeString": "struct CEGTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11575,
                        "name": "CEGTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22852,
                        "src": "4657:8:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_storage_ptr",
                          "typeString": "struct CEGTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11580,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11577,
                        "name": "asset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11570,
                        "src": "4681:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset storage pointer"
                        }
                      },
                      "id": 11578,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCEGTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10697,
                      "src": "4681:26:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_CEGTerms_$22852_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct CEGTerms memory)"
                      }
                    },
                    "id": 11579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4681:28:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                      "typeString": "struct CEGTerms memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4657:52:36"
                },
                {
                  "assignments": [
                    11582
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11582,
                      "mutability": "mutable",
                      "name": "nextEventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11647,
                      "src": "4720:23:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11581,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "4720:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11583,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4720:23:36"
                },
                {
                  "assignments": [
                    11585
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11585,
                      "mutability": "mutable",
                      "name": "nextScheduleTimeOffset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11647,
                      "src": "4753:30:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11584,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4753:7:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11586,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4753:30:36"
                },
                {
                  "id": 11641,
                  "nodeType": "Block",
                  "src": "4808:678:36",
                  "statements": [
                    {
                      "assignments": [
                        11588,
                        11590
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 11588,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11641,
                          "src": "4823:19:36",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 11587,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "4823:9:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 11590,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 11641,
                          "src": "4844:26:36",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 11589,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4844:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 11608,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11597,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11576,
                                "src": "4951:5:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                                  "typeString": "struct CEGTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11598,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11570,
                                      "src": "4974:5:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 11599,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "4974:14:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 11600,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "4974:44:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 11603,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11601,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "5019:9:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 11602,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "FP",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5019:12:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4974:58:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11604,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "5050:9:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 11605,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "FP",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5050:12:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                                  "typeString": "struct CEGTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11593,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11570,
                                      "src": "4897:5:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 11594,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "4897:12:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 11592,
                                  "name": "ICEGEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30294,
                                  "src": "4886:10:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ICEGEngine_$30294_$",
                                    "typeString": "type(contract ICEGEngine)"
                                  }
                                },
                                "id": 11595,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4886:24:36",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ICEGEngine_$30294",
                                  "typeString": "contract ICEGEngine"
                                }
                              },
                              "id": 11596,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30277,
                              "src": "4886:47:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_CEGTerms_$22852_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct CEGTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 11606,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4886:190:36",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 11591,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "4874:11:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 11607,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4874:203:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4822:255:36"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 11630,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 11617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11611,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 11609,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11585,
                                  "src": "5114:22:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 11610,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5140:1:36",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5114:27:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 11612,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5113:29:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11615,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 11613,
                                  "name": "scheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11590,
                                  "src": "5163:18:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 11614,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11585,
                                  "src": "5184:22:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5163:43:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 11616,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5162:45:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5113:94:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 11628,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11620,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 11618,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11585,
                                  "src": "5228:22:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 11619,
                                  "name": "scheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11590,
                                  "src": "5254:18:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5228:44:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11627,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 11622,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11588,
                                      "src": "5291:9:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 11621,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "5276:14:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 11623,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5276:25:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 11625,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11582,
                                      "src": "5319:13:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 11624,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "5304:14:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 11626,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5304:29:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5276:57:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5228:105:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 11629,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5227:107:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5113:221:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 11640,
                      "nodeType": "IfStatement",
                      "src": "5092:376:36",
                      "trueBody": {
                        "id": 11639,
                        "nodeType": "Block",
                        "src": "5349:119:36",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 11633,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 11631,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11585,
                                "src": "5367:22:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 11632,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11590,
                                "src": "5392:18:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5367:43:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 11634,
                            "nodeType": "ExpressionStatement",
                            "src": "5367:43:36"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 11637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 11635,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11582,
                                "src": "5428:13:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 11636,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11588,
                                "src": "5444:9:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "5428:25:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 11638,
                            "nodeType": "ExpressionStatement",
                            "src": "5428:25:36"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11643,
                        "name": "nextEventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11582,
                        "src": "5515:13:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11644,
                        "name": "nextScheduleTimeOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11585,
                        "src": "5530:22:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11642,
                      "name": "encodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24702,
                      "src": "5503:11:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                        "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                      }
                    },
                    "id": 11645,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5503:50:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 11568,
                  "id": 11646,
                  "nodeType": "Return",
                  "src": "5496:57:36"
                }
              ]
            },
            "documentation": null,
            "id": 11648,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNextCyclicEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 11565,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 11564,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4555:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4546:23:36"
            },
            "parameters": {
              "id": 11563,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11562,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11648,
                  "src": "4491:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11561,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4491:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4490:17:36"
            },
            "returnParameters": {
              "id": 11568,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11567,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11648,
                  "src": "4587:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11566,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4587:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4586:9:36"
            },
            "scope": 11649,
            "src": "4463:1097:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 11650,
        "src": "388:5174:36"
      }
    ],
    "src": "41:5522:36"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {
    "4": {
      "events": {
        "0xace25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb47865": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "GrantedAccess",
          "type": "event"
        },
        "0x5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd89646": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "RegisteredAsset",
          "type": "event"
        },
        "0x42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "RevokedAccess",
          "type": "event"
        },
        "0x6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a20": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevActor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newActor",
              "type": "address"
            }
          ],
          "name": "UpdatedActor",
          "type": "event"
        },
        "0x66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevBeneficiary",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newBeneficiary",
              "type": "address"
            }
          ],
          "name": "UpdatedBeneficiary",
          "type": "event"
        },
        "0xdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevEngine",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newEngine",
              "type": "address"
            }
          ],
          "name": "UpdatedEngine",
          "type": "event"
        },
        "0x0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedFinalizedState",
          "type": "event"
        },
        "0xa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e25": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevObligor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newObligor",
              "type": "address"
            }
          ],
          "name": "UpdatedObligor",
          "type": "event"
        },
        "0xad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec6": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedState",
          "type": "event"
        },
        "0xb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "UpdatedTerms",
          "type": "event"
        }
      },
      "links": {
        "CEGEncoder": "0x72eB2e9B524C1C56931f63c62EAf344F946113eC"
      },
      "address": "0x1059458c646d641888240a3dF15020D74c41Be68",
      "transactionHash": "0x1c9e8b9379159441aa50554f235c2599b537bd073e12328246f9377e7ae21fd3"
    },
    "5": {
      "events": {
        "0xace25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb47865": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "GrantedAccess",
          "type": "event"
        },
        "0x5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd89646": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "RegisteredAsset",
          "type": "event"
        },
        "0x42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "RevokedAccess",
          "type": "event"
        },
        "0x6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a20": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevActor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newActor",
              "type": "address"
            }
          ],
          "name": "UpdatedActor",
          "type": "event"
        },
        "0x66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevBeneficiary",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newBeneficiary",
              "type": "address"
            }
          ],
          "name": "UpdatedBeneficiary",
          "type": "event"
        },
        "0xdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevEngine",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newEngine",
              "type": "address"
            }
          ],
          "name": "UpdatedEngine",
          "type": "event"
        },
        "0x0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedFinalizedState",
          "type": "event"
        },
        "0xa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e25": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevObligor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newObligor",
              "type": "address"
            }
          ],
          "name": "UpdatedObligor",
          "type": "event"
        },
        "0xad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec6": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedState",
          "type": "event"
        },
        "0xb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "UpdatedTerms",
          "type": "event"
        }
      },
      "links": {
        "CEGEncoder": "0x841f3506a336C4182EdC010B52727d47DcCcB0f4"
      },
      "address": "0x89A2571cd44fBCf9B97549e502BECe4a13F23B0c",
      "transactionHash": "0xcab89be9ad7b48ad9e6b17de1413de76947dde699c57938c3b1d2027bbf435b6"
    },
    "1994": {
      "events": {
        "0xace25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb47865": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "GrantedAccess",
          "type": "event"
        },
        "0x5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd89646": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "RegisteredAsset",
          "type": "event"
        },
        "0x42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "RevokedAccess",
          "type": "event"
        },
        "0x6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a20": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevActor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newActor",
              "type": "address"
            }
          ],
          "name": "UpdatedActor",
          "type": "event"
        },
        "0x66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevBeneficiary",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newBeneficiary",
              "type": "address"
            }
          ],
          "name": "UpdatedBeneficiary",
          "type": "event"
        },
        "0xdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevEngine",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newEngine",
              "type": "address"
            }
          ],
          "name": "UpdatedEngine",
          "type": "event"
        },
        "0x0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedFinalizedState",
          "type": "event"
        },
        "0xa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e25": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevObligor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newObligor",
              "type": "address"
            }
          ],
          "name": "UpdatedObligor",
          "type": "event"
        },
        "0xad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec6": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedState",
          "type": "event"
        },
        "0xb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "UpdatedTerms",
          "type": "event"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        }
      },
      "links": {
        "CEGEncoder": "0x882FbD67A3a5b2905730548C8378b5fE44336154"
      },
      "address": "0x89E5C5d824F63add4Bb7E17cA7B9BA462CD51A70",
      "transactionHash": "0x0db1ce8690b89d6037863a2a789f9df403c7fa8edbdd71ffb1e185e5923556ed"
    }
  },
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:17.902Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "approveActor(address)": {
        "details": "Can only be called by the owner of the contract.",
        "params": {
          "actor": "address of the actor"
        }
      },
      "getActor(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "address of the asset actor"
        }
      },
      "getEngine(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "address of the engine of the asset"
        }
      },
      "getEventAtIndex(bytes32,uint256)": {
        "params": {
          "assetId": "id of the asset",
          "index": "index of the event to return"
        },
        "returns": {
          "_0": "Event"
        }
      },
      "getFinalizedState(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "state of the asset"
        }
      },
      "getNextScheduleIndex(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "Index"
        }
      },
      "getNextScheduledEvent(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "event"
        }
      },
      "getOwnership(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "addresses of all owners of the asset"
        }
      },
      "getSchedule(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "the schedule"
        }
      },
      "getScheduleLength(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "Length of the schedule"
        }
      },
      "getState(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "state of the asset"
        }
      },
      "getTerms(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "terms of the asset"
        }
      },
      "grantAccess(bytes32,bytes4,address)": {
        "details": "Can only be called by an authorized account.",
        "params": {
          "account": "address of the account to grant access to",
          "assetId": "id of the asset",
          "methodSignature": "function / method signature (4 byte keccak256 hash of the method selector)"
        }
      },
      "hasAccess(bytes32,bytes4,address)": {
        "params": {
          "account": "address of the account for which to check access",
          "assetId": "id of the asset",
          "methodSignature": "function / method signature (4 byte keccak256 hash of the method selector)"
        },
        "returns": {
          "_0": "true if allowed access"
        }
      },
      "hasRootAccess(bytes32,address)": {
        "params": {
          "account": "address of the account for which to check root acccess",
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "true if has root access"
        }
      },
      "isEventSettled(bytes32,bytes32)": {
        "params": {
          "_event": "event (encoded)",
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "true if event was settled"
        }
      },
      "isRegistered(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "true if asset exist"
        }
      },
      "markEventAsSettled(bytes32,bytes32,int256)": {
        "details": "Can only be set by authorized account.",
        "params": {
          "_event": "event (encoded) to be marked as settled",
          "assetId": "id of the asset"
        }
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "popNextScheduledEvent(bytes32)": {
        "details": "Can only be updated by the assets actor or by an authorized account.",
        "params": {
          "assetId": "id of the asset"
        }
      },
      "registerAsset(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32[],(address,address,address,address),address,address,address)": {
        "params": {
          "actor": "account which is allowed to update the asset state",
          "admin": "account which as admin rights (optional)",
          "engine": "ACTUS Engine of the asset",
          "ownership": "ownership of the asset",
          "schedule": "schedule of the asset",
          "state": "initial state of the asset",
          "terms": "asset specific terms (CEGTerms)"
        }
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "revokeAccess(bytes32,bytes4,address)": {
        "details": "Can only be called by an authorized account.",
        "params": {
          "account": "address of the account to revoke access for",
          "assetId": "id of the asset",
          "methodSignature": "function / method signature (4 byte keccak256 hash of the method selector)"
        }
      },
      "setActor(bytes32,address)": {
        "params": {
          "actor": "address of the Actor contract",
          "assetId": "id of the asset"
        }
      },
      "setCounterpartyBeneficiary(bytes32,address)": {
        "details": "Can only be updated by the current counterparty beneficiary or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "newCounterpartyBeneficiary": "address of the new beneficiary"
        }
      },
      "setCounterpartyObligor(bytes32,address)": {
        "details": "Can only be updated by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "newCounterpartyObligor": "address of the new counterparty obligor"
        }
      },
      "setCreatorBeneficiary(bytes32,address)": {
        "details": "Can only be updated by the current creator beneficiary or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "newCreatorBeneficiary": "address of the new beneficiary"
        }
      },
      "setCreatorObligor(bytes32,address)": {
        "details": "Can only be updated by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "newCreatorObligor": "address of the new creator obligor"
        }
      },
      "setEngine(bytes32,address)": {
        "details": "Can only be set by authorized account.",
        "params": {
          "assetId": "id of the asset",
          "engine": "new engine address"
        }
      },
      "setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "details": "Can only be updated by the assets actor or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "state": "next state of the asset"
        }
      },
      "setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "details": "Can only be updated by the assets actor or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "state": "next state of the asset"
        }
      },
      "setTerms(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)))": {
        "details": "Can only be set by authorized account.",
        "params": {
          "assetId": "id of the asset",
          "terms": "new terms"
        }
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "title": "CEGRegistry",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "approveActor(address)": {
        "notice": "Approves the address of an actor contract e.g. for registering assets."
      },
      "getActor(bytes32)": {
        "notice": "Returns the address of the actor which is allowed to update the state of the asset."
      },
      "getEngine(bytes32)": {
        "notice": "Returns the address of a the ACTUS engine corresponding to the ContractType of an asset."
      },
      "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"
      },
      "getEventAtIndex(bytes32,uint256)": {
        "notice": "Returns an event for a given position (index) in a schedule of a given asset."
      },
      "getFinalizedState(bytes32)": {
        "notice": "Returns the state of an asset."
      },
      "getNextScheduleIndex(bytes32)": {
        "notice": "Returns the index of the next event to be processed for a schedule of an asset."
      },
      "getNextScheduledEvent(bytes32)": {
        "notice": "Returns the next event to process."
      },
      "getNextUnderlyingEvent(bytes32)": {
        "notice": "If the underlying of the asset changes in performance to a covered performance, it returns the exerciseDate event."
      },
      "getOwnership(bytes32)": {
        "notice": "Retrieves the registered addresses of owners (creator, counterparty) of an asset."
      },
      "getSchedule(bytes32)": {
        "notice": "Convenience method for retrieving the entire schedule Not recommended to execute method on-chain (if schedule is too long the tx may run out of gas)"
      },
      "getScheduleLength(bytes32)": {
        "notice": "Returns the length of a schedule of a given asset."
      },
      "getState(bytes32)": {
        "notice": "Returns the state of an asset."
      },
      "getTerms(bytes32)": {
        "notice": "Returns the terms of an asset."
      },
      "grantAccess(bytes32,bytes4,address)": {
        "notice": "Grant access to an account to call a specific method on a specific asset."
      },
      "hasAccess(bytes32,bytes4,address)": {
        "notice": "Check whether an account is allowed to call a specific method on a specific asset."
      },
      "hasRootAccess(bytes32,address)": {
        "notice": "Check whether an account has root access for a specific asset."
      },
      "isEventSettled(bytes32,bytes32)": {
        "notice": "Returns true if an event of an assets schedule was settled"
      },
      "isRegistered(bytes32)": {
        "notice": "Returns if there is an asset registerd for a given assetId"
      },
      "markEventAsSettled(bytes32,bytes32,int256)": {
        "notice": "Mark an event as settled"
      },
      "popNextScheduledEvent(bytes32)": {
        "notice": "Increments the index of a schedule of an asset. (if max index is reached the index will be left unchanged)"
      },
      "registerAsset(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32[],(address,address,address,address),address,address,address)": {
        "notice": "@param assetId id of the asset"
      },
      "revokeAccess(bytes32,bytes4,address)": {
        "notice": "Revoke access for an account to call a specific method on a specific asset."
      },
      "setActor(bytes32,address)": {
        "notice": "Set the address of the Actor contract which should be going forward."
      },
      "setCounterpartyBeneficiary(bytes32,address)": {
        "notice": "Updates the address of the default beneficiary of cashflows going to the counterparty."
      },
      "setCounterpartyObligor(bytes32,address)": {
        "notice": "Update the address of the counterparty which has to fulfill obligations for the counterparty of the asset."
      },
      "setCreatorBeneficiary(bytes32,address)": {
        "notice": "Update the address of the default beneficiary of cashflows going to the creator."
      },
      "setCreatorObligor(bytes32,address)": {
        "notice": "Update the address of the obligor which has to fulfill obligations for the creator of the asset."
      },
      "setEngine(bytes32,address)": {
        "notice": "Set the engine address which should be used for the asset going forward."
      },
      "setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "notice": "Sets next finalized state of an asset."
      },
      "setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "notice": "Sets next state of an asset."
      },
      "setTerms(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)))": {
        "notice": "Set the terms of the asset"
      }
    },
    "notice": "Registry for ACTUS Protocol assets",
    "version": 1
  }
}