{
  "contractName": "CECRegistry",
  "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 ContractPerformance",
              "name": "creditEventTypeCovered",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "coverageOfCreditEnhancement",
              "type": "int256"
            },
            {
              "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 CECTerms",
          "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 ContractPerformance",
              "name": "creditEventTypeCovered",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "coverageOfCreditEnhancement",
              "type": "int256"
            },
            {
              "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 CECTerms",
          "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 ContractPerformance",
              "name": "creditEventTypeCovered",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "coverageOfCreditEnhancement",
              "type": "int256"
            },
            {
              "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 CECTerms",
          "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 ContractPerformance\",\"name\":\"creditEventTypeCovered\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"coverageOfCreditEnhancement\",\"type\":\"int256\"},{\"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 CECTerms\",\"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 ContractPerformance\",\"name\":\"creditEventTypeCovered\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"coverageOfCreditEnhancement\",\"type\":\"int256\"},{\"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 CECTerms\",\"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 ContractPerformance\",\"name\":\"creditEventTypeCovered\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"coverageOfCreditEnhancement\",\"type\":\"int256\"},{\"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 CECTerms\",\"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,uint256,uint256,int256,int256,int256,(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 (CECTerms)\"}},\"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,uint256,uint256,int256,int256,int256,(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\":\"CECRegistry\",\"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,uint256,uint256,int256,int256,int256,(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,uint256,uint256,int256,int256,int256,(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/CEC/CECRegistry.sol\":\"CECRegistry\"},\"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/CEC/CECEncoder.sol\":{\"keccak256\":\"0xcf9933f47c8a206b2b3d52e823290a6f635cb7a555df24606a8731879b8de4c8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0b7ce32068106ec8b5345c043e4c8ea15b53f43829378d2b78db24a1fa6c8b0d\",\"dweb:/ipfs/QmRrGybhJ9qZJERcZ7zkXzEQAt4TVjpWEW94g5Bfitv1Rz\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEC/CECRegistry.sol\":{\"keccak256\":\"0x0eac4ab48406645f84d39b791760b53c21caa7c3b610bd47469f86e4575f8209\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6c3930ed167e7d546ecc0424570506944ad476485cbb05cab0b27996b6abf946\",\"dweb:/ipfs/QmZ5MVC43fvsjh6sU825xVpWFk4cn3X9CRRAvrS9A29FAc\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEC/ICECRegistry.sol\":{\"keccak256\":\"0x6f7fe6894294f65e1b2f8b5cae6a42bd79e9f234701e5a6a10214ee736326e54\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://06dbbd913a2ab732974493bcae8d796587d39dba17c38409238d156c979525d0\",\"dweb:/ipfs/Qmei2UEueRKckgZG9F3tG4rkAe1KoCwJPKPD7Mgkey4n9u\"]},\"@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/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": "0x60806040523480156200001157600080fd5b506000620000276001600160e01b036200007716565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200007b565b3390565b614b30806200008b6000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c8063a17b75b51161019d578063d51dc3dc116100e9578063e8f7ca3e116100a2578063ee43eda11161007c578063ee43eda11461072e578063f2fde38b14610741578063f52f84e114610754578063f82277d2146107675761030c565b8063e8f7ca3e146106f5578063eb01255914610708578063ecef55771461071b5761030c565b8063d51dc3dc14610676578063d981e77314610689578063de07a1731461069c578063e05a66e0146106af578063e50e0ef7146106c2578063e7dc3188146106e25761030c565b8063ba4d2d2811610156578063c364ac9c11610130578063c364ac9c1461061d578063c3b6e7c214610630578063ccfc347e14610643578063cf5aed12146106565761030c565b8063ba4d2d28146105c9578063bc6a7d76146105ea578063bd1f0a6c1461060a5761030c565b8063a17b75b51461054a578063b02ca0c01461055d578063b0b4888f14610570578063b3c45ebe14610590578063b461dd4f146105a3578063b8282041146105b65761030c565b8063512872f41161025c5780636fe55baa1161021557806375e86ae4116101ef57806375e86ae4146104fc5780637d870dd41461050f578063811322fb146105225780638da5cb5b146105355761030c565b80636fe55baa146104b3578063715018a6146104d357806372540003146104db5761030c565b8063512872f4146104475780636031a0941461045a578063606aa07e1461046d57806367fe5d70146104805780636a899b9b1461046d5780636be39bda146104935761030c565b80631b126815116102c95780633549d08d116102a35780633549d08d146103ee57806337462dba1461040157806339262e87146104145780633adc277a146104275761030c565b80631b126815146103a857806327258b22146103c857806328e0f8a9146103db5761030c565b806303a81a2a1461031157806309648a9d146103265780630c5b75a41461034f5780630d62037a1461036f578063135b9f4d146103825780631717e86714610395575b600080fd5b61032461031f366004613981565b61077a565b005b610339610334366004613951565b61084f565b604051610346919061491b565b60405180910390f35b61036261035d366004613951565b610876565b604051610346919061404e565b61032461037d366004613981565b6108ed565b6103626103903660046139b0565b610992565b6103246103a33660046139fc565b610a31565b6103bb6103b63660046139fc565b610ae7565b6040516103469190614033565b6103bb6103d6366004613951565b610b64565b6103626103e9366004613951565b610b79565b6103246103fc366004613981565b610b8e565b61033961040f366004613951565b610c69565b6103246104223660046139fc565b610c88565b61043a610435366004613951565b610d2d565b6040516103469190613fef565b610324610455366004613981565b610d47565b610324610468366004613981565b610e0e565b61036261047b3660046139b0565b610ee9565b61032461048e366004613b5d565b610f07565b6104a66104a1366004613951565b610fcd565b60405161034691906147a1565b6104c66104c13660046139b0565b61106b565b60405161034691906148eb565b61032461110a565b6104ee6104e9366004613951565b611189565b604051610346929190614113565b61036261050a366004613951565b6111b2565b61032461051d366004613b5d565b611586565b610362610530366004613b81565b61163f565b61053d61164d565b6040516103469190613fc1565b610362610558366004613951565b61165c565b61036261056b3660046139b0565b611671565b61058361057e3660046139b0565b611692565b60405161034691906148a8565b61053d61059e366004613951565b611731565b6103626105b13660046139b0565b611750565b6103626105c4366004613951565b611796565b6105dc6105d73660046139b0565b611869565b60405161034692919061403e565b6105fd6105f83660046139b0565b611893565b604051610346919061489a565b610324610618366004613981565b611932565b61032461062b366004613a49565b6119ca565b61036261063e366004613951565b611aca565b6103bb6106513660046138f9565b611cc7565b6106696106643660046139b0565b611cdc565b6040516103469190614a00565b6103626106843660046139b0565b611cfa565b6103246106973660046139b0565b611d40565b6103246106aa3660046139d1565b611daf565b6103626106bd366004613b9d565b611e4b565b6106d56106d0366004613951565b611e69565b6040516103469190614616565b6103246106f03660046138f9565b611ec7565b6103bb610703366004613981565b611f20565b61053d6107163660046139b0565b611f56565b6106696107293660046139b0565b611fec565b61053d61073c366004613951565b612082565b61032461074f3660046138f9565b6120a2565b610362610762366004613951565b612158565b610324610775366004613a76565b61216d565b6000828152600160208190526040909120015482906001600160a01b03163314806107b757506107b7816000356001600160e01b03191633610ae7565b6107dc5760405162461bcd60e51b81526004016107d390614288565b60405180910390fd5b6000838152600160208190526040918290200180546001600160a01b038581166001600160a01b0319831617909255915191169084907f6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a20906108419084908790613fd5565b60405180910390a250505050565b610857613657565b600082815260016020526040902061086e9061227c565b90505b919050565b60008181526001602081905260408220015482906001600160a01b03163314806108b257506108b2816000356001600160e01b03191633610ae7565b6108ce5760405162461bcd60e51b81526004016107d390614288565b6000838152600160205260408120600601805491905591505b50919050565b610904826000356001600160e01b03191633610ae7565b6109205760405162461bcd60e51b81526004016107d39061455a565b6000828152600160205260409081902060070180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e259061098590859084908690614057565b60405180910390a1505050565b600082815260016020526040808220905163bb63c3b560e01b815273__CECEncoder____________________________9163bb63c3b5916109d891908690600401614651565b60206040518083038186803b1580156109f057600080fd5b505af4158015610a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613969565b90505b92915050565b610a48836000356001600160e01b03191633610ae7565b610a645760405162461bcd60e51b81526004016107d39061450b565b60008381526001602081815260408084206001600160e01b031987168552600c0182528084206001600160a01b038616808652925292839020805460ff1916909217909155905184907face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb4786590610ada9086906140fe565b60405180910390a3505050565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516845290915281205460ff1680610b5a57506000848152600160209081526040808320838052600c0182528083206001600160a01b038616845290915290205460ff165b90505b9392505050565b60009081526001602052604090205460ff1690565b60009081526001602052604090206005015490565b6000828152600160205260409020600a01546001600160a01b031680610bc65760405162461bcd60e51b81526004016107d39061412b565b336001600160a01b0382161480610bef5750610bef836000356001600160e01b03191633610ae7565b610c0b5760405162461bcd60e51b81526004016107d390614188565b60008381526001602052604090819020600a0180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce9061098590859084908690614057565b610c71613657565b600082815260016020526040902061086e90612574565b610c9f836000356001600160e01b03191633610ae7565b610cbb5760405162461bcd60e51b81526004016107d39061450b565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516808552925291829020805460ff19169055905184907f42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa90610ada9086906140fe565b600081815260016020526040902060609061086e90612896565b6000828152600160208190526040909120015482906001600160a01b0316331480610d845750610d84816000356001600160e01b03191633610ae7565b610da05760405162461bcd60e51b81526004016107d390614288565b6000838152600160205260409081902080546001600160a01b03858116610100908102610100600160a81b03198416179093559251919004919091169084907fdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb906108419084908790613fd5565b6000828152600160205260409020600801546001600160a01b031680610e465760405162461bcd60e51b81526004016107d3906144ae565b336001600160a01b0382161480610e6f5750610e6f836000356001600160e01b03191633610ae7565b610e8b5760405162461bcd60e51b81526004016107d390614376565b6000838152600160205260409081902060080180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce9061098590859084908690614057565b6000828152600160205260408120610a28908363ffffffff61292c16565b6000828152600160208190526040909120015482906001600160a01b0316331480610f445750610f44816000356001600160e01b03191633610ae7565b610f605760405162461bcd60e51b81526004016107d390614288565b610f8c610f7236849003840184613df4565b60008581526001602052604090209063ffffffff61294216565b827f0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f8360200135604051610fc0919061404e565b60405180910390a2505050565b610fd56136f1565b600082815260016020526040908190209051630f4835d760e41b815273__CECEncoder____________________________9163f4835d709161101a919060040161404e565b6102a06040518083038186803b15801561103357600080fd5b505af4158015611047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e9190613c30565b611073613773565b6000838152600160205260409081902090516320384a4b60e21b815273__CECEncoder____________________________916380e1292c916110ba91908690600401614651565b60606040518083038186803b1580156110d257600080fd5b505af41580156110e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613da9565b611112612c70565b6000546001600160a01b0390811691161461113f5760405162461bcd60e51b81526004016107d39061441c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c81111561119d57fe5b92505067ffffffffffffffff83169050915091565b60006111bc613796565b6111dc8372636f6e74726163745265666572656e63655f3160681b611893565b8051909150158015906111fe57506003816060015160048111156111fc57fe5b145b1561157d5780516020820151604051631392c59160e11b81526001600160a01b038216906327258b229061123690859060040161404e565b60206040518083038186803b15801561124e57600080fd5b505afa158015611262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112869190613931565b6112a25760405162461bcd60e51b81526004016107d3906145ae565b60006112bd866b65786572636973654461746560a01b610ee9565b905060006112e4877518dc99591a5d115d995b9d151e5c1950dbdd995c995960521b611fec565b60ff1660058111156112f257fe5b90506000836001600160a01b031663cf5aed12866040518263ffffffff1660e01b815260040161132291906140d9565b60206040518083038186803b15801561133a57600080fd5b505afa15801561134e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113729190613ef1565b60ff16600581111561138057fe5b90506000846001600160a01b031663606aa07e876040518263ffffffff1660e01b81526004016113b091906140b6565b60206040518083038186803b1580156113c857600080fd5b505afa1580156113dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114009190613969565b9050831561142157611413601b42611e4b565b975050505050505050610871565b600083600581111561142f57fe5b14158015611452575082600581111561144457fe5b82600581111561145057fe5b145b1561157657600182600581111561146557fe5b141561147657611413601a82611e4b565b600282600581111561148457fe5b141561152e57611492613773565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a90600401614076565b60606040518083038186803b1580156114d657600080fd5b505afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e9190613da9565b905061151f601a6106bd8385612c74565b98505050505050505050610871565b600382600581111561153c57fe5b14156115765761154a613773565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a90600401614093565b5050505050505b50600092915050565b6000828152600160208190526040909120015482906001600160a01b03163314806115c357506115c3816000356001600160e01b03191633610ae7565b6115df5760405162461bcd60e51b81526004016107d390614288565b61160b6115f136849003840184613df4565b60008581526001602052604090209063ffffffff612da016565b827fad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec68360200135604051610fc0919061404e565b600081601c81111561086e57fe5b6000546001600160a01b031690565b60009081526001602052604090206004015490565b60009182526001602090815260408084209284526003909201905290205490565b61169a6137bd565b600083815260016020526040908190209051638155522160e01b815273__CECEncoder____________________________916381555221916116e191908690600401614651565b60806040518083038186803b1580156116f957600080fd5b505af415801561170d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613d57565b600090815260016020819052604090912001546001600160a01b031690565b60008281526001602052604080822090516309b9f6ab60e21b815273__CECEncoder____________________________916326e7daac916109d891908690600401614651565b6000818152600160205260408120816117ae84613096565b600583015460009081526003840160205260409020546004840154919250901580156117d8575081155b156117ea575060009250610871915050565b6000806117f684611189565b9150915060008061180685611189565b9150915080600014806118225750821580159061182257508083105b8061184657508083148015611846575061183b8261163f565b6118448561163f565b105b1561185a5785975050505050505050610871565b84975050505050505050610871565b6000918252600160208181526040808520938552600f90930190529120805491015460ff90911691565b61189b613796565b60008381526001602052604090819020905163bce57f1b60e01b815273__CECEncoder____________________________9163bce57f1b916118e291908690600401614651565b60806040518083038186803b1580156118fa57600080fd5b505af415801561190e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613d3c565b611949826000356001600160e01b03191633610ae7565b6119655760405162461bcd60e51b81526004016107d39061422b565b6000828152600160205260409081902060090180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e259061098590859084908690614057565b6000828152600160208190526040909120015482906001600160a01b0316331480611a075750611a07816000356001600160e01b03191633610ae7565b611a235760405162461bcd60e51b81526004016107d390614288565b60008381526001602052604090819020905163215ac35960e21b815273__CECEncoder____________________________9163856b0d6491611a6a9190869060040161465f565b60006040518083038186803b158015611a8257600080fd5b505af4158015611a96573d6000803e3d6000fd5b50506040518592507fb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb9150600090a2505050565b60008181526001602081905260408220015482906001600160a01b0316331480611b065750611b06816000356001600160e01b03191633610ae7565b611b225760405162461bcd60e51b81526004016107d390614288565b600083815260016020526040812090611b3a85613096565b60058301546000908152600384016020526040902054600484015491925090158015611b64575081155b15611b765750600093506108e7915050565b600080611b8284611189565b91509150600080611b9285611189565b9150915084861415611c07578260028801600086601c811115611bb157fe5b601c811115611bbc57fe5b8152602081019190915260400160002055600487015460058801541415611bee5750600097506108e795505050505050565b5050506005909301805460010190555092506108e79050565b801580611c1d57508215801590611c1d57508083105b80611c4157508083148015611c415750611c368261163f565b611c3f8561163f565b105b15611c84578260028801600086601c811115611c5957fe5b601c811115611c6457fe5b8152602081019190915260400160002055509396506108e7945050505050565b801580611c98575060048701546005880154145b15611cae5750600097506108e795505050505050565b50505060059093018054600101905593506108e7915050565b60026020526000908152604090205460ff1681565b6000828152600160205260408120610a28908363ffffffff61309c16565b6000828152600160205260408082209051632802ab6f60e21b815273__CECEncoder____________________________9163a00aadbc916109d891908690600401614651565b6000828152600160208190526040909120015482906001600160a01b0316331480611d7d5750611d7d816000356001600160e01b03191633610ae7565b611d995760405162461bcd60e51b81526004016107d390614288565b5060009182526001602052604090912060060155565b6000838152600160208190526040909120015483906001600160a01b0316331480611dec5750611dec816000356001600160e01b03191633610ae7565b611e085760405162461bcd60e51b81526004016107d390614288565b50604080518082018252600180825260208083019485526000968752818152838720958752600f90950190945293209251835460ff191690151517835551910155565b60008160f884601c811115611e5c57fe5b60ff16901b179392505050565b611e716137de565b50600090815260016020908152604091829020825160808101845260078201546001600160a01b03908116825260088301548116938201939093526009820154831693810193909352600a015416606082015290565b611ecf612c70565b6000546001600160a01b03908116911614611efc5760405162461bcd60e51b81526004016107d39061441c565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000918252600160209081526040808420848052600c0182528084206001600160a01b0393909316845291905290205460ff1690565b600082815260016020526040808220905163cabb242960e01b815273__CECEncoder____________________________9163cabb242991611f9c91908690600401614651565b60206040518083038186803b158015611fb457600080fd5b505af4158015611fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613915565b600082815260016020526040808220905163a5be46bb60e01b815273__CECEncoder____________________________9163a5be46bb9161203291908690600401614651565b60206040518083038186803b15801561204a57600080fd5b505af415801561205e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613ef1565b60009081526001602052604090205461010090046001600160a01b031690565b6120aa612c70565b6000546001600160a01b039081169116146120d75760405162461bcd60e51b81526004016107d39061441c565b6001600160a01b0381166120fd5760405162461bcd60e51b81526004016107d3906141e5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526001602052604090206006015490565b3360009081526002602052604090205460ff1661219c5760405162461bcd60e51b81526004016107d390614322565b6121fa896121af368a90038a018a613df4565b8888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506121f29250505036899003890189613bc8565b878787613148565b60008981526001602052604090819020905163215ac35960e21b815273__CECEncoder____________________________9163856b0d649161224191908c9060040161465f565b60006040518083038186803b15801561225957600080fd5b505af415801561226d573d6000803e3d6000fd5b50505050505050505050505050565b612284613657565b604080516102808101825272636f6e7472616374506572666f726d616e636560681b6000908152600e85016020529190912054819060f81c60058111156122c757fe5b60058111156122d257fe5b8152697374617475734461746560b01b6000908152600e8501602081815260408084205482860152706e6f6e506572666f726d696e674461746560781b845282825280842054818601526b6d617475726974794461746560a01b84528282528084205460608601526b65786572636973654461746560a01b84528282528084205460808601526e7465726d696e6174696f6e4461746560881b84528282528084205460a08601526c6c617374436f75706f6e44617960981b84528282528084205460c0860152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b84528282528084205460e08601526e1858d8dc9d5959125b9d195c995cdd608a1b845282825280842054610100860152691999595058d8dc9d595960b21b845282825280842054610120860152726e6f6d696e616c496e7465726573745261746560681b8452828252808420546101408601527834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b845282825280842054610160860152783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b8452828252808420546101808601527f6e6578745072696e636970616c526564656d7074696f6e5061796d656e7400008452828252808420546101a08601526d195e195c98da5cd9505b5bdd5b9d60921b8452828252808420546101c08601526f65786572636973655175616e7469747960801b8452828252808420546101e0860152677175616e7469747960c01b8452828252808420546102008601527018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b8452828252808420546102208601526b36b0b933b4b72330b1ba37b960a11b8452828252808420546102408601526f30b2353ab9ba36b2b73a2330b1ba37b960811b8452919052902054610260909101529050919050565b61257c613657565b604080516102808101825274465f636f6e7472616374506572666f726d616e636560581b6000908152600e85016020529190912054819060f81c60058111156125c157fe5b60058111156125cc57fe5b81526b465f7374617475734461746560a01b6000908152600e850160208181526040808420548286015272465f6e6f6e506572666f726d696e674461746560681b845282825280842054818601526d465f6d617475726974794461746560901b84528282528084205460608601526d465f65786572636973654461746560901b845282825280842054608086015270465f7465726d696e6174696f6e4461746560781b84528282528084205460a08601526e465f6c617374436f75706f6e44617960881b84528282528084205460c0860152721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b84528282528084205460e0860152701197d858d8dc9d5959125b9d195c995cdd607a1b8452828252808420546101008601526b1197d999595058d8dc9d595960a21b84528282528084205461012086015274465f6e6f6d696e616c496e7465726573745261746560581b8452828252808420546101408601527f465f696e7465726573745363616c696e674d756c7469706c69657200000000008452828252808420546101608601527f465f6e6f74696f6e616c5363616c696e674d756c7469706c69657200000000008452828252808420546101808601527f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e748452828252808420546101a08601526f1197d95e195c98da5cd9505b5bdd5b9d60821b8452828252808420546101c086015271465f65786572636973655175616e7469747960701b8452828252808420546101e086015269465f7175616e7469747960b01b845282825280842054610200860152721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b8452828252808420546102208601526d232fb6b0b933b4b72330b1ba37b960911b84528282528084205461024086015271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b8452919052902054610260909101529050919050565b606080826002016002015467ffffffffffffffff811180156128b757600080fd5b506040519080825280602002602001820160405280156128e1578160200160208202803683370190505b50905060005b6004840154811015612925576000818152600385016020526040902054825183908390811061291257fe5b60209081029190910101526001016128e7565b5092915050565b6000908152600e91909101602052604090205490565b61297b8274465f636f6e7472616374506572666f726d616e636560581b60f88460000151600581111561297157fe5b60ff16901b6132cd565b61299c826b465f7374617475734461746560a01b836020015160001b6132cd565b6129c48272465f6e6f6e506572666f726d696e674461746560681b836040015160001b6132cd565b6129e7826d465f6d617475726974794461746560901b836060015160001b6132cd565b612a0a826d465f65786572636973654461746560901b836080015160001b6132cd565b612a308270465f7465726d696e6174696f6e4461746560781b8360a0015160001b6132cd565b612a5882721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b8360e0015160001b6132cd565b612a7f82701197d858d8dc9d5959125b9d195c995cdd607a1b83610100015160001b6132cd565b612aa1826b1197d999595058d8dc9d595960a21b83610120015160001b6132cd565b612acc8274465f6e6f6d696e616c496e7465726573745261746560581b83610140015160001b6132cd565b612aff827f465f696e7465726573745363616c696e674d756c7469706c696572000000000083610160015160001b6132cd565b612b32827f465f6e6f74696f6e616c5363616c696e674d756c7469706c696572000000000083610180015160001b6132cd565b612b65827f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e74836101a0015160001b6132cd565b612b8b826f1197d95e195c98da5cd9505b5bdd5b9d60821b836101c0015160001b6132cd565b612bb38271465f65786572636973655175616e7469747960701b836101e0015160001b6132cd565b612bd38269465f7175616e7469747960b01b83610200015160001b6132cd565b612bfc82721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b83610220015160001b6132cd565b612c20826d232fb6b0b933b4b72330b1ba37b960911b83610240015160001b6132cd565b612c488271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b83610260015160001b6132cd565b612c6c826e465f6c617374436f75706f6e44617960881b8360c0015160001b6132cd565b5050565b3390565b6000808084602001516005811115612c8857fe5b1415612ca8578351612ca190849063ffffffff61330316565b9050610a28565b600184602001516005811115612cba57fe5b1415612cd6578351612ca190849060070263ffffffff61330316565b600284602001516005811115612ce857fe5b1415612d01578351612ca190849063ffffffff61331816565b600384602001516005811115612d1357fe5b1415612d2f578351612ca190849060030263ffffffff61331816565b600484602001516005811115612d4157fe5b1415612d5d578351612ca190849060060263ffffffff61331816565b600584602001516005811115612d6f57fe5b1415612d88578351612ca190849063ffffffff61339416565b60405162461bcd60e51b81526004016107d390614451565b612dcd8272636f6e7472616374506572666f726d616e636560681b60f88460000151600581111561297157fe5b612dec82697374617475734461746560b01b836020015160001b6132cd565b612e1282706e6f6e506572666f726d696e674461746560781b836040015160001b6132cd565b612e33826b6d617475726974794461746560a01b836060015160001b6132cd565b612e54826b65786572636973654461746560a01b836080015160001b6132cd565b612e78826e7465726d696e6174696f6e4461746560881b8360a0015160001b6132cd565b612e9e82701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b8360e0015160001b6132cd565b612ec3826e1858d8dc9d5959125b9d195c995cdd608a1b83610100015160001b6132cd565b612ee382691999595058d8dc9d595960b21b83610120015160001b6132cd565b612f0c82726e6f6d696e616c496e7465726573745261746560681b83610140015160001b6132cd565b612f3b827834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b83610160015160001b6132cd565b612f6a82783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b83610180015160001b6132cd565b612f9d827f6e6578745072696e636970616c526564656d7074696f6e5061796d656e740000836101a0015160001b6132cd565b612fc1826d195e195c98da5cd9505b5bdd5b9d60921b836101c0015160001b6132cd565b612fe7826f65786572636973655175616e7469747960801b836101e0015160001b6132cd565b61300582677175616e7469747960c01b83610200015160001b6132cd565b61302c827018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b83610220015160001b6132cd565b61304e826b36b0b933b4b72330b1ba37b960a11b83610240015160001b6132cd565b613074826f30b2353ab9ba36b2b73a2330b1ba37b960811b83610260015160001b6132cd565b612c6c826c6c617374436f75706f6e44617960981b8360c0015160001b6132cd565b50600090565b600072636f6e7472616374506572666f726d616e636560681b8214156130ed575072636f6e7472616374506572666f726d616e636560681b6000908152600e8301602052604090205460f81c610a2b565b74465f636f6e7472616374506572666f726d616e636560581b821415613140575074465f636f6e7472616374506572666f726d616e636560581b6000908152600e8301602052604090205460f81c610a2b565b506000610a2b565b6000878152600160205260409020805460ff16156131785760405162461bcd60e51b81526004016107d3906142d7565b6001600160a01b03831660009081526002602052604090205460ff1615156001146131b55760405162461bcd60e51b81526004016107d3906143d3565b805485516007830180546001600160a01b03199081166001600160a01b039384161790915560208801516008850180548316918416919091179055604088015160098501805483169184169190911790556060880151600a85018054831691841691909117905560ff199092166001908117610100600160a81b03191661010088841602178455830180549092169085161790556132538188612da0565b613263818863ffffffff61294216565b613273818763ffffffff6133bb16565b6001600160a01b0382161561328c5761328c8883613423565b7f5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd89646886040516132bb919061404e565b60405180910390a15050505050505050565b6000828152600e840160205260409020548114156132ea576132fe565b6000828152600e8401602052604090208190555b505050565b620151808102820182811015610a2b57600080fd5b600080808061332c62015180875b0461349a565b600c9188016000198101838104949094019650945092509006600101915060006133568484613530565b905080821115613364578091505b620151808706620151806133798686866135b6565b020194508685101561338a57600080fd5b5050505092915050565b60008080806133a66201518087613326565b91870194509250905060006133568484613530565b60005b81518110156132fe576000801b8282815181106133d757fe5b602002602001015114156133ea576132fe565b8181815181106133f657fe5b602090810291909101810151600083815260038601909252604090912055600101600483018190556133be565b6000828152600160208181526040808420848052600c0182528084206001600160a01b0386168086529252808420805460ff19169093179092559051909184917face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb478659161348e916140fe565b60405180910390a35050565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f84605002816134f157fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b600081600114806135415750816003145b8061354c5750816005145b806135575750816007145b806135625750816008145b8061356d575081600a145b80613578575081600c145b156135855750601f610a2b565b816002146135955750601e610a2b565b61359e83613632565b6135a957601c6135ac565b601d5b60ff169392505050565b60006107b28410156135c757600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f028161360357fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b60006004820615801561364757506064820615155b8061086e57505061019090061590565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516101e081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001613761613796565b815260200161376e613796565b905290565b6040805160608101909152600080825260208201905b8152600060209091015290565b6040805160808101825260008082526020820181905290918201908152602001600061376e565b60408051608081019091526000808252602082019081526020016000613789565b60408051608081018252600080825260208201819052918101829052606081019190915290565b8035610a2b81614a8a565b80518015158114610a2b57600080fd5b8051610a2b81614a9f565b8051610a2b81614aac565b8035610a2b81614ab9565b8051610a2b81614ab9565b8051610a2b81614ad3565b8035610a2b81614ae0565b8051610a2b81614ae0565b6000608082840312156108e7578081fd5b60006102a082840312156108e7578081fd5b6000608082840312156138a1578081fd5b6138ab6080614a0e565b9050815181526020820151602082015260408201516138c981614ac6565b604082015260608201516138dc81614ac6565b606082015292915050565b600061028082840312156108e7578081fd5b60006020828403121561390a578081fd5b8135610a2881614a8a565b600060208284031215613926578081fd5b8151610a2881614a8a565b600060208284031215613942578081fd5b81518015158114610a28578182fd5b600060208284031215613962578081fd5b5035919050565b60006020828403121561397a578081fd5b5051919050565b60008060408385031215613993578081fd5b8235915060208301356139a581614a8a565b809150509250929050565b600080604083850312156139c2578182fd5b50508035926020909101359150565b6000806000606084860312156139e5578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215613a10578081fd5b8335925060208401356001600160e01b031981168114613a2e578182fd5b91506040840135613a3e81614a8a565b809150509250925092565b6000806102c08385031215613a5c578182fd5b82359150613a6d846020850161387e565b90509250929050565b60008060008060008060008060006106408a8c031215613a94578687fd5b89359850613aa58b60208c0161387e565b9750613ab58b6102c08c016138e7565b96506105408a013567ffffffffffffffff80821115613ad2578687fd5b818c018d601f820112613ae3578788fd5b8035925081831115613af3578788fd5b8d60208085028301011115613b06578788fd5b6020019750909550613b1e90508b6105608c0161386d565b9350613b2e8b6105e08c01613805565b9250613b3e8b6106008c01613805565b9150613b4e8b6106208c01613805565b90509295985092959850929598565b6000806102a08385031215613b70578182fd5b82359150613a6d84602085016138e7565b600060208284031215613b92578081fd5b8135610a2881614aed565b60008060408385031215613baf578182fd5b8235613bba81614aed565b946020939093013593505050565b600060808284031215613bd9578081fd5b613be36080614a0e565b8235613bee81614a8a565b81526020830135613bfe81614a8a565b60208201526040830135613c1181614a8a565b60408201526060830135613c2481614a8a565b60608201529392505050565b60006102a08284031215613c42578081fd5b613c4d6101e0614a0e565b613c578484613862565b8152613c66846020850161382b565b6020820152613c78846040850161384c565b6040820152613c8a8460608501613841565b6060820152613c9c8460808501613820565b6080820152613cae8460a0850161382b565b60a0820152613cc08460c08501613841565b60c0820152613cd28460e0850161382b565b60e0820152610100838101519082015261012080840151908201526101408084015190820152610160808401519082015261018080840151908201526101a0613d1d85828601613890565b90820152613d2f846102208501613890565b6101c08201529392505050565b600060808284031215613d4d578081fd5b610a288383613890565b600060808284031215613d68578081fd5b613d726080614a0e565b825181526020830151613d8481614ab9565b60208201526040830151613d9781614aac565b6040820152613c248460608501613810565b600060608284031215613dba578081fd5b613dc46060614a0e565b825181526020830151613dd681614ab9565b6020820152613de88460408501613810565b60408201529392505050565b6000610280808385031215613e07578182fd5b613e1081614a0e565b613e1a8585613836565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b600060208284031215613f02578081fd5b815160ff81168114610a28578182fd5b60098110613f1c57fe5b9052565b613f1c81614a69565b613f1c81614a76565b600d8110613f1c57fe5b60138110613f1c57fe5b80358252602081013560208301526040810135613f6281614ac6565b613f6b81614a80565b60408301526060810135613f7e81614ac6565b613f8781614a80565b806060840152505050565b80518252602081015160208301526040810151613fae81614a80565b60408301526060810151613f8781614a80565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156140275783518352928401929184019160010161400b565b50909695505050505050565b901515815260200190565b9115158252602082015260400190565b90815260200190565b9283526001600160a01b03918216602084015216604082015260600190565b9081526a19dc9858d954195c9a5bd960aa1b602082015260400190565b9081527019195b1a5b9c5d595b98de54195c9a5bd9607a1b602082015260400190565b908152706e6f6e506572666f726d696e674461746560781b602082015260400190565b90815272636f6e7472616374506572666f726d616e636560681b602082015260400190565b6001600160e01b031991909116815260200190565b60408101601d841061412157fe5b9281526020015290565b6020808252603e908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20454e5452595f444f45535f4e4f545f45584953540000606082015260800190565b6020808252603d908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20554e415554484f52495a45445f53454e444552000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526039908201527f417373657452656769737472792e736574436f756e74657270617274794f626c60408201527f69676f723a20554e415554484f52495a45445f53454e44455200000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e6973417574686f72697a65643a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b6020808252602b908201527f4261736552656769737472792e73657441737365743a2041535345545f414c5260408201526a454144595f45584953545360a81b606082015260800190565b60208082526034908201527f4261736552656769737472792e6f6e6c79417070726f7665644163746f72733a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526038908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20554e415554484f52495a45445f53454e4445520000000000000000606082015260800190565b60208082526029908201527f4261736552656769737472792e73657441737365743a204143544f525f4e4f5460408201526817d054141493d5915160ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526039908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20454e5452595f444f45535f4e4f545f455849535400000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e7265766f6b654163636573733a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b60208082526034908201527f417373657452656769737472792e73657443726561746f724f626c69676f723a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526042908201527f41737365744163746f722e6765744e657874556e6465726c79696e674576656e60408201527f743a20554e4445524c59494e475f41535345545f444f45535f4e4f545f45584960608201526114d560f21b608082015260a00190565b81516001600160a01b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b918252602082015260400190565b8281526102c0810160208381019061468290840161467d8387613857565b613f3c565b61468c8185614a42565b6146996040850182613f20565b50506146a86040840184614a5c565b6146b56060840182613f32565b506146c36060840184614a4f565b6146d06080840182613f29565b506146de6080840184614a35565b6146eb60a0840182613f12565b506146f960a0840184614a42565b61470660c0840182613f20565b5061471460c0840184614a4f565b61472160e0840182613f29565b5061472f60e0840184614a42565b61010061473e81850183613f20565b61012091508085013582850152506101408185013581850152610160915080850135828501525061018081850135818501526101a0915080850135828501525061478e6101c08401828601613f46565b50610b5d61024083016102208501613f46565b60006102a0820190506147b5828451613f3c565b60208301516147c76020840182613f20565b5060408301516147da6040840182613f32565b5060608301516147ed6060840182613f29565b5060808301516148006080840182613f12565b5060a083015161481360a0840182613f20565b5060c083015161482660c0840182613f29565b5060e083015161483960e0840182613f20565b50610100838101519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a08084015161488482850182613f92565b50506101c0830151612925610220840182613f92565b60808101610a2b8284613f92565b81518152602082015160808201906148bf81614a76565b602083015260408301516148d281614a69565b8060408401525060608301511515606083015292915050565b815181526020820151606082019061490281614a76565b8060208401525060408301511515604083015292915050565b60006102808201905061492f828451613f29565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715614a2d57600080fd5b604052919050565b60008235610a2881614a9f565b60008235610a2881614aac565b60008235610a2881614ab9565b60008235610a2881614ad3565b60028110614a7357fe5b50565b60068110614a7357fe5b60058110614a7357fe5b6001600160a01b0381168114614a7357600080fd5b60098110614a7357600080fd5b60028110614a7357600080fd5b60068110614a7357600080fd5b60058110614a7357600080fd5b600d8110614a7357600080fd5b60138110614a7357600080fd5b601d8110614a7357600080fdfea2646970667358221220ad4de0ed303e3f3904361bf64f0b90c848cd518b5f784af8b26a322c2193b80164736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061030c5760003560e01c8063a17b75b51161019d578063d51dc3dc116100e9578063e8f7ca3e116100a2578063ee43eda11161007c578063ee43eda11461072e578063f2fde38b14610741578063f52f84e114610754578063f82277d2146107675761030c565b8063e8f7ca3e146106f5578063eb01255914610708578063ecef55771461071b5761030c565b8063d51dc3dc14610676578063d981e77314610689578063de07a1731461069c578063e05a66e0146106af578063e50e0ef7146106c2578063e7dc3188146106e25761030c565b8063ba4d2d2811610156578063c364ac9c11610130578063c364ac9c1461061d578063c3b6e7c214610630578063ccfc347e14610643578063cf5aed12146106565761030c565b8063ba4d2d28146105c9578063bc6a7d76146105ea578063bd1f0a6c1461060a5761030c565b8063a17b75b51461054a578063b02ca0c01461055d578063b0b4888f14610570578063b3c45ebe14610590578063b461dd4f146105a3578063b8282041146105b65761030c565b8063512872f41161025c5780636fe55baa1161021557806375e86ae4116101ef57806375e86ae4146104fc5780637d870dd41461050f578063811322fb146105225780638da5cb5b146105355761030c565b80636fe55baa146104b3578063715018a6146104d357806372540003146104db5761030c565b8063512872f4146104475780636031a0941461045a578063606aa07e1461046d57806367fe5d70146104805780636a899b9b1461046d5780636be39bda146104935761030c565b80631b126815116102c95780633549d08d116102a35780633549d08d146103ee57806337462dba1461040157806339262e87146104145780633adc277a146104275761030c565b80631b126815146103a857806327258b22146103c857806328e0f8a9146103db5761030c565b806303a81a2a1461031157806309648a9d146103265780630c5b75a41461034f5780630d62037a1461036f578063135b9f4d146103825780631717e86714610395575b600080fd5b61032461031f366004613981565b61077a565b005b610339610334366004613951565b61084f565b604051610346919061491b565b60405180910390f35b61036261035d366004613951565b610876565b604051610346919061404e565b61032461037d366004613981565b6108ed565b6103626103903660046139b0565b610992565b6103246103a33660046139fc565b610a31565b6103bb6103b63660046139fc565b610ae7565b6040516103469190614033565b6103bb6103d6366004613951565b610b64565b6103626103e9366004613951565b610b79565b6103246103fc366004613981565b610b8e565b61033961040f366004613951565b610c69565b6103246104223660046139fc565b610c88565b61043a610435366004613951565b610d2d565b6040516103469190613fef565b610324610455366004613981565b610d47565b610324610468366004613981565b610e0e565b61036261047b3660046139b0565b610ee9565b61032461048e366004613b5d565b610f07565b6104a66104a1366004613951565b610fcd565b60405161034691906147a1565b6104c66104c13660046139b0565b61106b565b60405161034691906148eb565b61032461110a565b6104ee6104e9366004613951565b611189565b604051610346929190614113565b61036261050a366004613951565b6111b2565b61032461051d366004613b5d565b611586565b610362610530366004613b81565b61163f565b61053d61164d565b6040516103469190613fc1565b610362610558366004613951565b61165c565b61036261056b3660046139b0565b611671565b61058361057e3660046139b0565b611692565b60405161034691906148a8565b61053d61059e366004613951565b611731565b6103626105b13660046139b0565b611750565b6103626105c4366004613951565b611796565b6105dc6105d73660046139b0565b611869565b60405161034692919061403e565b6105fd6105f83660046139b0565b611893565b604051610346919061489a565b610324610618366004613981565b611932565b61032461062b366004613a49565b6119ca565b61036261063e366004613951565b611aca565b6103bb6106513660046138f9565b611cc7565b6106696106643660046139b0565b611cdc565b6040516103469190614a00565b6103626106843660046139b0565b611cfa565b6103246106973660046139b0565b611d40565b6103246106aa3660046139d1565b611daf565b6103626106bd366004613b9d565b611e4b565b6106d56106d0366004613951565b611e69565b6040516103469190614616565b6103246106f03660046138f9565b611ec7565b6103bb610703366004613981565b611f20565b61053d6107163660046139b0565b611f56565b6106696107293660046139b0565b611fec565b61053d61073c366004613951565b612082565b61032461074f3660046138f9565b6120a2565b610362610762366004613951565b612158565b610324610775366004613a76565b61216d565b6000828152600160208190526040909120015482906001600160a01b03163314806107b757506107b7816000356001600160e01b03191633610ae7565b6107dc5760405162461bcd60e51b81526004016107d390614288565b60405180910390fd5b6000838152600160208190526040918290200180546001600160a01b038581166001600160a01b0319831617909255915191169084907f6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a20906108419084908790613fd5565b60405180910390a250505050565b610857613657565b600082815260016020526040902061086e9061227c565b90505b919050565b60008181526001602081905260408220015482906001600160a01b03163314806108b257506108b2816000356001600160e01b03191633610ae7565b6108ce5760405162461bcd60e51b81526004016107d390614288565b6000838152600160205260408120600601805491905591505b50919050565b610904826000356001600160e01b03191633610ae7565b6109205760405162461bcd60e51b81526004016107d39061455a565b6000828152600160205260409081902060070180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e259061098590859084908690614057565b60405180910390a1505050565b600082815260016020526040808220905163bb63c3b560e01b815273__CECEncoder____________________________9163bb63c3b5916109d891908690600401614651565b60206040518083038186803b1580156109f057600080fd5b505af4158015610a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613969565b90505b92915050565b610a48836000356001600160e01b03191633610ae7565b610a645760405162461bcd60e51b81526004016107d39061450b565b60008381526001602081815260408084206001600160e01b031987168552600c0182528084206001600160a01b038616808652925292839020805460ff1916909217909155905184907face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb4786590610ada9086906140fe565b60405180910390a3505050565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516845290915281205460ff1680610b5a57506000848152600160209081526040808320838052600c0182528083206001600160a01b038616845290915290205460ff165b90505b9392505050565b60009081526001602052604090205460ff1690565b60009081526001602052604090206005015490565b6000828152600160205260409020600a01546001600160a01b031680610bc65760405162461bcd60e51b81526004016107d39061412b565b336001600160a01b0382161480610bef5750610bef836000356001600160e01b03191633610ae7565b610c0b5760405162461bcd60e51b81526004016107d390614188565b60008381526001602052604090819020600a0180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce9061098590859084908690614057565b610c71613657565b600082815260016020526040902061086e90612574565b610c9f836000356001600160e01b03191633610ae7565b610cbb5760405162461bcd60e51b81526004016107d39061450b565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516808552925291829020805460ff19169055905184907f42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa90610ada9086906140fe565b600081815260016020526040902060609061086e90612896565b6000828152600160208190526040909120015482906001600160a01b0316331480610d845750610d84816000356001600160e01b03191633610ae7565b610da05760405162461bcd60e51b81526004016107d390614288565b6000838152600160205260409081902080546001600160a01b03858116610100908102610100600160a81b03198416179093559251919004919091169084907fdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb906108419084908790613fd5565b6000828152600160205260409020600801546001600160a01b031680610e465760405162461bcd60e51b81526004016107d3906144ae565b336001600160a01b0382161480610e6f5750610e6f836000356001600160e01b03191633610ae7565b610e8b5760405162461bcd60e51b81526004016107d390614376565b6000838152600160205260409081902060080180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce9061098590859084908690614057565b6000828152600160205260408120610a28908363ffffffff61292c16565b6000828152600160208190526040909120015482906001600160a01b0316331480610f445750610f44816000356001600160e01b03191633610ae7565b610f605760405162461bcd60e51b81526004016107d390614288565b610f8c610f7236849003840184613df4565b60008581526001602052604090209063ffffffff61294216565b827f0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f8360200135604051610fc0919061404e565b60405180910390a2505050565b610fd56136f1565b600082815260016020526040908190209051630f4835d760e41b815273__CECEncoder____________________________9163f4835d709161101a919060040161404e565b6102a06040518083038186803b15801561103357600080fd5b505af4158015611047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e9190613c30565b611073613773565b6000838152600160205260409081902090516320384a4b60e21b815273__CECEncoder____________________________916380e1292c916110ba91908690600401614651565b60606040518083038186803b1580156110d257600080fd5b505af41580156110e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613da9565b611112612c70565b6000546001600160a01b0390811691161461113f5760405162461bcd60e51b81526004016107d39061441c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c81111561119d57fe5b92505067ffffffffffffffff83169050915091565b60006111bc613796565b6111dc8372636f6e74726163745265666572656e63655f3160681b611893565b8051909150158015906111fe57506003816060015160048111156111fc57fe5b145b1561157d5780516020820151604051631392c59160e11b81526001600160a01b038216906327258b229061123690859060040161404e565b60206040518083038186803b15801561124e57600080fd5b505afa158015611262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112869190613931565b6112a25760405162461bcd60e51b81526004016107d3906145ae565b60006112bd866b65786572636973654461746560a01b610ee9565b905060006112e4877518dc99591a5d115d995b9d151e5c1950dbdd995c995960521b611fec565b60ff1660058111156112f257fe5b90506000836001600160a01b031663cf5aed12866040518263ffffffff1660e01b815260040161132291906140d9565b60206040518083038186803b15801561133a57600080fd5b505afa15801561134e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113729190613ef1565b60ff16600581111561138057fe5b90506000846001600160a01b031663606aa07e876040518263ffffffff1660e01b81526004016113b091906140b6565b60206040518083038186803b1580156113c857600080fd5b505afa1580156113dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114009190613969565b9050831561142157611413601b42611e4b565b975050505050505050610871565b600083600581111561142f57fe5b14158015611452575082600581111561144457fe5b82600581111561145057fe5b145b1561157657600182600581111561146557fe5b141561147657611413601a82611e4b565b600282600581111561148457fe5b141561152e57611492613773565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a90600401614076565b60606040518083038186803b1580156114d657600080fd5b505afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e9190613da9565b905061151f601a6106bd8385612c74565b98505050505050505050610871565b600382600581111561153c57fe5b14156115765761154a613773565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a90600401614093565b5050505050505b50600092915050565b6000828152600160208190526040909120015482906001600160a01b03163314806115c357506115c3816000356001600160e01b03191633610ae7565b6115df5760405162461bcd60e51b81526004016107d390614288565b61160b6115f136849003840184613df4565b60008581526001602052604090209063ffffffff612da016565b827fad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec68360200135604051610fc0919061404e565b600081601c81111561086e57fe5b6000546001600160a01b031690565b60009081526001602052604090206004015490565b60009182526001602090815260408084209284526003909201905290205490565b61169a6137bd565b600083815260016020526040908190209051638155522160e01b815273__CECEncoder____________________________916381555221916116e191908690600401614651565b60806040518083038186803b1580156116f957600080fd5b505af415801561170d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613d57565b600090815260016020819052604090912001546001600160a01b031690565b60008281526001602052604080822090516309b9f6ab60e21b815273__CECEncoder____________________________916326e7daac916109d891908690600401614651565b6000818152600160205260408120816117ae84613096565b600583015460009081526003840160205260409020546004840154919250901580156117d8575081155b156117ea575060009250610871915050565b6000806117f684611189565b9150915060008061180685611189565b9150915080600014806118225750821580159061182257508083105b8061184657508083148015611846575061183b8261163f565b6118448561163f565b105b1561185a5785975050505050505050610871565b84975050505050505050610871565b6000918252600160208181526040808520938552600f90930190529120805491015460ff90911691565b61189b613796565b60008381526001602052604090819020905163bce57f1b60e01b815273__CECEncoder____________________________9163bce57f1b916118e291908690600401614651565b60806040518083038186803b1580156118fa57600080fd5b505af415801561190e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613d3c565b611949826000356001600160e01b03191633610ae7565b6119655760405162461bcd60e51b81526004016107d39061422b565b6000828152600160205260409081902060090180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e259061098590859084908690614057565b6000828152600160208190526040909120015482906001600160a01b0316331480611a075750611a07816000356001600160e01b03191633610ae7565b611a235760405162461bcd60e51b81526004016107d390614288565b60008381526001602052604090819020905163215ac35960e21b815273__CECEncoder____________________________9163856b0d6491611a6a9190869060040161465f565b60006040518083038186803b158015611a8257600080fd5b505af4158015611a96573d6000803e3d6000fd5b50506040518592507fb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb9150600090a2505050565b60008181526001602081905260408220015482906001600160a01b0316331480611b065750611b06816000356001600160e01b03191633610ae7565b611b225760405162461bcd60e51b81526004016107d390614288565b600083815260016020526040812090611b3a85613096565b60058301546000908152600384016020526040902054600484015491925090158015611b64575081155b15611b765750600093506108e7915050565b600080611b8284611189565b91509150600080611b9285611189565b9150915084861415611c07578260028801600086601c811115611bb157fe5b601c811115611bbc57fe5b8152602081019190915260400160002055600487015460058801541415611bee5750600097506108e795505050505050565b5050506005909301805460010190555092506108e79050565b801580611c1d57508215801590611c1d57508083105b80611c4157508083148015611c415750611c368261163f565b611c3f8561163f565b105b15611c84578260028801600086601c811115611c5957fe5b601c811115611c6457fe5b8152602081019190915260400160002055509396506108e7945050505050565b801580611c98575060048701546005880154145b15611cae5750600097506108e795505050505050565b50505060059093018054600101905593506108e7915050565b60026020526000908152604090205460ff1681565b6000828152600160205260408120610a28908363ffffffff61309c16565b6000828152600160205260408082209051632802ab6f60e21b815273__CECEncoder____________________________9163a00aadbc916109d891908690600401614651565b6000828152600160208190526040909120015482906001600160a01b0316331480611d7d5750611d7d816000356001600160e01b03191633610ae7565b611d995760405162461bcd60e51b81526004016107d390614288565b5060009182526001602052604090912060060155565b6000838152600160208190526040909120015483906001600160a01b0316331480611dec5750611dec816000356001600160e01b03191633610ae7565b611e085760405162461bcd60e51b81526004016107d390614288565b50604080518082018252600180825260208083019485526000968752818152838720958752600f90950190945293209251835460ff191690151517835551910155565b60008160f884601c811115611e5c57fe5b60ff16901b179392505050565b611e716137de565b50600090815260016020908152604091829020825160808101845260078201546001600160a01b03908116825260088301548116938201939093526009820154831693810193909352600a015416606082015290565b611ecf612c70565b6000546001600160a01b03908116911614611efc5760405162461bcd60e51b81526004016107d39061441c565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000918252600160209081526040808420848052600c0182528084206001600160a01b0393909316845291905290205460ff1690565b600082815260016020526040808220905163cabb242960e01b815273__CECEncoder____________________________9163cabb242991611f9c91908690600401614651565b60206040518083038186803b158015611fb457600080fd5b505af4158015611fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613915565b600082815260016020526040808220905163a5be46bb60e01b815273__CECEncoder____________________________9163a5be46bb9161203291908690600401614651565b60206040518083038186803b15801561204a57600080fd5b505af415801561205e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613ef1565b60009081526001602052604090205461010090046001600160a01b031690565b6120aa612c70565b6000546001600160a01b039081169116146120d75760405162461bcd60e51b81526004016107d39061441c565b6001600160a01b0381166120fd5760405162461bcd60e51b81526004016107d3906141e5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526001602052604090206006015490565b3360009081526002602052604090205460ff1661219c5760405162461bcd60e51b81526004016107d390614322565b6121fa896121af368a90038a018a613df4565b8888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506121f29250505036899003890189613bc8565b878787613148565b60008981526001602052604090819020905163215ac35960e21b815273__CECEncoder____________________________9163856b0d649161224191908c9060040161465f565b60006040518083038186803b15801561225957600080fd5b505af415801561226d573d6000803e3d6000fd5b50505050505050505050505050565b612284613657565b604080516102808101825272636f6e7472616374506572666f726d616e636560681b6000908152600e85016020529190912054819060f81c60058111156122c757fe5b60058111156122d257fe5b8152697374617475734461746560b01b6000908152600e8501602081815260408084205482860152706e6f6e506572666f726d696e674461746560781b845282825280842054818601526b6d617475726974794461746560a01b84528282528084205460608601526b65786572636973654461746560a01b84528282528084205460808601526e7465726d696e6174696f6e4461746560881b84528282528084205460a08601526c6c617374436f75706f6e44617960981b84528282528084205460c0860152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b84528282528084205460e08601526e1858d8dc9d5959125b9d195c995cdd608a1b845282825280842054610100860152691999595058d8dc9d595960b21b845282825280842054610120860152726e6f6d696e616c496e7465726573745261746560681b8452828252808420546101408601527834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b845282825280842054610160860152783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b8452828252808420546101808601527f6e6578745072696e636970616c526564656d7074696f6e5061796d656e7400008452828252808420546101a08601526d195e195c98da5cd9505b5bdd5b9d60921b8452828252808420546101c08601526f65786572636973655175616e7469747960801b8452828252808420546101e0860152677175616e7469747960c01b8452828252808420546102008601527018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b8452828252808420546102208601526b36b0b933b4b72330b1ba37b960a11b8452828252808420546102408601526f30b2353ab9ba36b2b73a2330b1ba37b960811b8452919052902054610260909101529050919050565b61257c613657565b604080516102808101825274465f636f6e7472616374506572666f726d616e636560581b6000908152600e85016020529190912054819060f81c60058111156125c157fe5b60058111156125cc57fe5b81526b465f7374617475734461746560a01b6000908152600e850160208181526040808420548286015272465f6e6f6e506572666f726d696e674461746560681b845282825280842054818601526d465f6d617475726974794461746560901b84528282528084205460608601526d465f65786572636973654461746560901b845282825280842054608086015270465f7465726d696e6174696f6e4461746560781b84528282528084205460a08601526e465f6c617374436f75706f6e44617960881b84528282528084205460c0860152721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b84528282528084205460e0860152701197d858d8dc9d5959125b9d195c995cdd607a1b8452828252808420546101008601526b1197d999595058d8dc9d595960a21b84528282528084205461012086015274465f6e6f6d696e616c496e7465726573745261746560581b8452828252808420546101408601527f465f696e7465726573745363616c696e674d756c7469706c69657200000000008452828252808420546101608601527f465f6e6f74696f6e616c5363616c696e674d756c7469706c69657200000000008452828252808420546101808601527f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e748452828252808420546101a08601526f1197d95e195c98da5cd9505b5bdd5b9d60821b8452828252808420546101c086015271465f65786572636973655175616e7469747960701b8452828252808420546101e086015269465f7175616e7469747960b01b845282825280842054610200860152721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b8452828252808420546102208601526d232fb6b0b933b4b72330b1ba37b960911b84528282528084205461024086015271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b8452919052902054610260909101529050919050565b606080826002016002015467ffffffffffffffff811180156128b757600080fd5b506040519080825280602002602001820160405280156128e1578160200160208202803683370190505b50905060005b6004840154811015612925576000818152600385016020526040902054825183908390811061291257fe5b60209081029190910101526001016128e7565b5092915050565b6000908152600e91909101602052604090205490565b61297b8274465f636f6e7472616374506572666f726d616e636560581b60f88460000151600581111561297157fe5b60ff16901b6132cd565b61299c826b465f7374617475734461746560a01b836020015160001b6132cd565b6129c48272465f6e6f6e506572666f726d696e674461746560681b836040015160001b6132cd565b6129e7826d465f6d617475726974794461746560901b836060015160001b6132cd565b612a0a826d465f65786572636973654461746560901b836080015160001b6132cd565b612a308270465f7465726d696e6174696f6e4461746560781b8360a0015160001b6132cd565b612a5882721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b8360e0015160001b6132cd565b612a7f82701197d858d8dc9d5959125b9d195c995cdd607a1b83610100015160001b6132cd565b612aa1826b1197d999595058d8dc9d595960a21b83610120015160001b6132cd565b612acc8274465f6e6f6d696e616c496e7465726573745261746560581b83610140015160001b6132cd565b612aff827f465f696e7465726573745363616c696e674d756c7469706c696572000000000083610160015160001b6132cd565b612b32827f465f6e6f74696f6e616c5363616c696e674d756c7469706c696572000000000083610180015160001b6132cd565b612b65827f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e74836101a0015160001b6132cd565b612b8b826f1197d95e195c98da5cd9505b5bdd5b9d60821b836101c0015160001b6132cd565b612bb38271465f65786572636973655175616e7469747960701b836101e0015160001b6132cd565b612bd38269465f7175616e7469747960b01b83610200015160001b6132cd565b612bfc82721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b83610220015160001b6132cd565b612c20826d232fb6b0b933b4b72330b1ba37b960911b83610240015160001b6132cd565b612c488271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b83610260015160001b6132cd565b612c6c826e465f6c617374436f75706f6e44617960881b8360c0015160001b6132cd565b5050565b3390565b6000808084602001516005811115612c8857fe5b1415612ca8578351612ca190849063ffffffff61330316565b9050610a28565b600184602001516005811115612cba57fe5b1415612cd6578351612ca190849060070263ffffffff61330316565b600284602001516005811115612ce857fe5b1415612d01578351612ca190849063ffffffff61331816565b600384602001516005811115612d1357fe5b1415612d2f578351612ca190849060030263ffffffff61331816565b600484602001516005811115612d4157fe5b1415612d5d578351612ca190849060060263ffffffff61331816565b600584602001516005811115612d6f57fe5b1415612d88578351612ca190849063ffffffff61339416565b60405162461bcd60e51b81526004016107d390614451565b612dcd8272636f6e7472616374506572666f726d616e636560681b60f88460000151600581111561297157fe5b612dec82697374617475734461746560b01b836020015160001b6132cd565b612e1282706e6f6e506572666f726d696e674461746560781b836040015160001b6132cd565b612e33826b6d617475726974794461746560a01b836060015160001b6132cd565b612e54826b65786572636973654461746560a01b836080015160001b6132cd565b612e78826e7465726d696e6174696f6e4461746560881b8360a0015160001b6132cd565b612e9e82701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b8360e0015160001b6132cd565b612ec3826e1858d8dc9d5959125b9d195c995cdd608a1b83610100015160001b6132cd565b612ee382691999595058d8dc9d595960b21b83610120015160001b6132cd565b612f0c82726e6f6d696e616c496e7465726573745261746560681b83610140015160001b6132cd565b612f3b827834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b83610160015160001b6132cd565b612f6a82783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b83610180015160001b6132cd565b612f9d827f6e6578745072696e636970616c526564656d7074696f6e5061796d656e740000836101a0015160001b6132cd565b612fc1826d195e195c98da5cd9505b5bdd5b9d60921b836101c0015160001b6132cd565b612fe7826f65786572636973655175616e7469747960801b836101e0015160001b6132cd565b61300582677175616e7469747960c01b83610200015160001b6132cd565b61302c827018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b83610220015160001b6132cd565b61304e826b36b0b933b4b72330b1ba37b960a11b83610240015160001b6132cd565b613074826f30b2353ab9ba36b2b73a2330b1ba37b960811b83610260015160001b6132cd565b612c6c826c6c617374436f75706f6e44617960981b8360c0015160001b6132cd565b50600090565b600072636f6e7472616374506572666f726d616e636560681b8214156130ed575072636f6e7472616374506572666f726d616e636560681b6000908152600e8301602052604090205460f81c610a2b565b74465f636f6e7472616374506572666f726d616e636560581b821415613140575074465f636f6e7472616374506572666f726d616e636560581b6000908152600e8301602052604090205460f81c610a2b565b506000610a2b565b6000878152600160205260409020805460ff16156131785760405162461bcd60e51b81526004016107d3906142d7565b6001600160a01b03831660009081526002602052604090205460ff1615156001146131b55760405162461bcd60e51b81526004016107d3906143d3565b805485516007830180546001600160a01b03199081166001600160a01b039384161790915560208801516008850180548316918416919091179055604088015160098501805483169184169190911790556060880151600a85018054831691841691909117905560ff199092166001908117610100600160a81b03191661010088841602178455830180549092169085161790556132538188612da0565b613263818863ffffffff61294216565b613273818763ffffffff6133bb16565b6001600160a01b0382161561328c5761328c8883613423565b7f5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd89646886040516132bb919061404e565b60405180910390a15050505050505050565b6000828152600e840160205260409020548114156132ea576132fe565b6000828152600e8401602052604090208190555b505050565b620151808102820182811015610a2b57600080fd5b600080808061332c62015180875b0461349a565b600c9188016000198101838104949094019650945092509006600101915060006133568484613530565b905080821115613364578091505b620151808706620151806133798686866135b6565b020194508685101561338a57600080fd5b5050505092915050565b60008080806133a66201518087613326565b91870194509250905060006133568484613530565b60005b81518110156132fe576000801b8282815181106133d757fe5b602002602001015114156133ea576132fe565b8181815181106133f657fe5b602090810291909101810151600083815260038601909252604090912055600101600483018190556133be565b6000828152600160208181526040808420848052600c0182528084206001600160a01b0386168086529252808420805460ff19169093179092559051909184917face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb478659161348e916140fe565b60405180910390a35050565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f84605002816134f157fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b600081600114806135415750816003145b8061354c5750816005145b806135575750816007145b806135625750816008145b8061356d575081600a145b80613578575081600c145b156135855750601f610a2b565b816002146135955750601e610a2b565b61359e83613632565b6135a957601c6135ac565b601d5b60ff169392505050565b60006107b28410156135c757600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f028161360357fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b60006004820615801561364757506064820615155b8061086e57505061019090061590565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516101e081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001613761613796565b815260200161376e613796565b905290565b6040805160608101909152600080825260208201905b8152600060209091015290565b6040805160808101825260008082526020820181905290918201908152602001600061376e565b60408051608081019091526000808252602082019081526020016000613789565b60408051608081018252600080825260208201819052918101829052606081019190915290565b8035610a2b81614a8a565b80518015158114610a2b57600080fd5b8051610a2b81614a9f565b8051610a2b81614aac565b8035610a2b81614ab9565b8051610a2b81614ab9565b8051610a2b81614ad3565b8035610a2b81614ae0565b8051610a2b81614ae0565b6000608082840312156108e7578081fd5b60006102a082840312156108e7578081fd5b6000608082840312156138a1578081fd5b6138ab6080614a0e565b9050815181526020820151602082015260408201516138c981614ac6565b604082015260608201516138dc81614ac6565b606082015292915050565b600061028082840312156108e7578081fd5b60006020828403121561390a578081fd5b8135610a2881614a8a565b600060208284031215613926578081fd5b8151610a2881614a8a565b600060208284031215613942578081fd5b81518015158114610a28578182fd5b600060208284031215613962578081fd5b5035919050565b60006020828403121561397a578081fd5b5051919050565b60008060408385031215613993578081fd5b8235915060208301356139a581614a8a565b809150509250929050565b600080604083850312156139c2578182fd5b50508035926020909101359150565b6000806000606084860312156139e5578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215613a10578081fd5b8335925060208401356001600160e01b031981168114613a2e578182fd5b91506040840135613a3e81614a8a565b809150509250925092565b6000806102c08385031215613a5c578182fd5b82359150613a6d846020850161387e565b90509250929050565b60008060008060008060008060006106408a8c031215613a94578687fd5b89359850613aa58b60208c0161387e565b9750613ab58b6102c08c016138e7565b96506105408a013567ffffffffffffffff80821115613ad2578687fd5b818c018d601f820112613ae3578788fd5b8035925081831115613af3578788fd5b8d60208085028301011115613b06578788fd5b6020019750909550613b1e90508b6105608c0161386d565b9350613b2e8b6105e08c01613805565b9250613b3e8b6106008c01613805565b9150613b4e8b6106208c01613805565b90509295985092959850929598565b6000806102a08385031215613b70578182fd5b82359150613a6d84602085016138e7565b600060208284031215613b92578081fd5b8135610a2881614aed565b60008060408385031215613baf578182fd5b8235613bba81614aed565b946020939093013593505050565b600060808284031215613bd9578081fd5b613be36080614a0e565b8235613bee81614a8a565b81526020830135613bfe81614a8a565b60208201526040830135613c1181614a8a565b60408201526060830135613c2481614a8a565b60608201529392505050565b60006102a08284031215613c42578081fd5b613c4d6101e0614a0e565b613c578484613862565b8152613c66846020850161382b565b6020820152613c78846040850161384c565b6040820152613c8a8460608501613841565b6060820152613c9c8460808501613820565b6080820152613cae8460a0850161382b565b60a0820152613cc08460c08501613841565b60c0820152613cd28460e0850161382b565b60e0820152610100838101519082015261012080840151908201526101408084015190820152610160808401519082015261018080840151908201526101a0613d1d85828601613890565b90820152613d2f846102208501613890565b6101c08201529392505050565b600060808284031215613d4d578081fd5b610a288383613890565b600060808284031215613d68578081fd5b613d726080614a0e565b825181526020830151613d8481614ab9565b60208201526040830151613d9781614aac565b6040820152613c248460608501613810565b600060608284031215613dba578081fd5b613dc46060614a0e565b825181526020830151613dd681614ab9565b6020820152613de88460408501613810565b60408201529392505050565b6000610280808385031215613e07578182fd5b613e1081614a0e565b613e1a8585613836565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b600060208284031215613f02578081fd5b815160ff81168114610a28578182fd5b60098110613f1c57fe5b9052565b613f1c81614a69565b613f1c81614a76565b600d8110613f1c57fe5b60138110613f1c57fe5b80358252602081013560208301526040810135613f6281614ac6565b613f6b81614a80565b60408301526060810135613f7e81614ac6565b613f8781614a80565b806060840152505050565b80518252602081015160208301526040810151613fae81614a80565b60408301526060810151613f8781614a80565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156140275783518352928401929184019160010161400b565b50909695505050505050565b901515815260200190565b9115158252602082015260400190565b90815260200190565b9283526001600160a01b03918216602084015216604082015260600190565b9081526a19dc9858d954195c9a5bd960aa1b602082015260400190565b9081527019195b1a5b9c5d595b98de54195c9a5bd9607a1b602082015260400190565b908152706e6f6e506572666f726d696e674461746560781b602082015260400190565b90815272636f6e7472616374506572666f726d616e636560681b602082015260400190565b6001600160e01b031991909116815260200190565b60408101601d841061412157fe5b9281526020015290565b6020808252603e908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20454e5452595f444f45535f4e4f545f45584953540000606082015260800190565b6020808252603d908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20554e415554484f52495a45445f53454e444552000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526039908201527f417373657452656769737472792e736574436f756e74657270617274794f626c60408201527f69676f723a20554e415554484f52495a45445f53454e44455200000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e6973417574686f72697a65643a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b6020808252602b908201527f4261736552656769737472792e73657441737365743a2041535345545f414c5260408201526a454144595f45584953545360a81b606082015260800190565b60208082526034908201527f4261736552656769737472792e6f6e6c79417070726f7665644163746f72733a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526038908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20554e415554484f52495a45445f53454e4445520000000000000000606082015260800190565b60208082526029908201527f4261736552656769737472792e73657441737365743a204143544f525f4e4f5460408201526817d054141493d5915160ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526039908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20454e5452595f444f45535f4e4f545f455849535400000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e7265766f6b654163636573733a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b60208082526034908201527f417373657452656769737472792e73657443726561746f724f626c69676f723a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526042908201527f41737365744163746f722e6765744e657874556e6465726c79696e674576656e60408201527f743a20554e4445524c59494e475f41535345545f444f45535f4e4f545f45584960608201526114d560f21b608082015260a00190565b81516001600160a01b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b918252602082015260400190565b8281526102c0810160208381019061468290840161467d8387613857565b613f3c565b61468c8185614a42565b6146996040850182613f20565b50506146a86040840184614a5c565b6146b56060840182613f32565b506146c36060840184614a4f565b6146d06080840182613f29565b506146de6080840184614a35565b6146eb60a0840182613f12565b506146f960a0840184614a42565b61470660c0840182613f20565b5061471460c0840184614a4f565b61472160e0840182613f29565b5061472f60e0840184614a42565b61010061473e81850183613f20565b61012091508085013582850152506101408185013581850152610160915080850135828501525061018081850135818501526101a0915080850135828501525061478e6101c08401828601613f46565b50610b5d61024083016102208501613f46565b60006102a0820190506147b5828451613f3c565b60208301516147c76020840182613f20565b5060408301516147da6040840182613f32565b5060608301516147ed6060840182613f29565b5060808301516148006080840182613f12565b5060a083015161481360a0840182613f20565b5060c083015161482660c0840182613f29565b5060e083015161483960e0840182613f20565b50610100838101519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a08084015161488482850182613f92565b50506101c0830151612925610220840182613f92565b60808101610a2b8284613f92565b81518152602082015160808201906148bf81614a76565b602083015260408301516148d281614a69565b8060408401525060608301511515606083015292915050565b815181526020820151606082019061490281614a76565b8060208401525060408301511515604083015292915050565b60006102808201905061492f828451613f29565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715614a2d57600080fd5b604052919050565b60008235610a2881614a9f565b60008235610a2881614aac565b60008235610a2881614ab9565b60008235610a2881614ad3565b60028110614a7357fe5b50565b60068110614a7357fe5b60058110614a7357fe5b6001600160a01b0381168114614a7357600080fd5b60098110614a7357600080fd5b60028110614a7357600080fd5b60068110614a7357600080fd5b60058110614a7357600080fd5b600d8110614a7357600080fd5b60138110614a7357600080fd5b601d8110614a7357600080fdfea2646970667358221220ad4de0ed303e3f3904361bf64f0b90c848cd518b5f784af8b26a322c2193b80164736f6c634300060b0033",
  "immutableReferences": {},
  "sourceMap": "318:4254:32:-:0;;;414: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;318:4254:32;;768:104:115;855:10;768:104;:::o;318:4254:32:-;;;;;;;",
  "deployedSourceMap": "318:4254:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5134:271:8;;;;;;:::i;:::-;;:::i;:::-;;615:176:19;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2354:304:16;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3033:494:13:-;;;;;;:::i;:::-;;:::i;2960:271:32:-;;;;;;:::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;2566:264::-;;;;;;:::i;:::-;;:::i;1526:182:32:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3511: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;3794:276:32:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4264:157:8:-;;;;;;:::i;:::-;;:::i;3237:268:32:-;;;;;;:::i;:::-;;:::i;6636:1153:16:-;;;;;;:::i;:::-;;:::i;10335:286::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;4076:311:32:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3851:539:13:-;;;;;;:::i;:::-;;:::i;1891:225:32:-;;;;;;:::i;:::-;;:::i;8059:2064:16:-;;;;;;:::i;:::-;;:::i;895:46:8:-;;;;;;:::i;:::-;;:::i;1131:237:19:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2677:277:32:-;;;;;;:::i;:::-;;:::i;2145:203:16:-;;;;;;:::i;:::-;;:::i;10833:248::-;;;;;;:::i;:::-;;:::i;234:247:82:-;;;;;;:::i;:::-;;:::i;4599:179:13:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1411:101:8:-;;;;;;:::i;:::-;;:::i;3276:186:6:-;;;;;;:::i;:::-;;:::i;2394:277:32:-;;;;;;:::i;:::-;;:::i;2122:266::-;;;;;;:::i;:::-;;:::i;3904:159:8:-;;;;;;:::i;:::-;;:::i;1983:240:116:-;;;;;;:::i;:::-;;:::i;1959:180:16:-;;;;;;:::i;:::-;;:::i;917:469:32:-;;;;;;:::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;2960:271:32:-;3128:7;3158:15;;;:6;:15;;;;;;:66;;-1:-1:-1;;;3158:66:32;;:55;;;;:66;;:15;3214:9;;3158:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3151:73;;2960: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;2566:264::-;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;1526:182:32:-;1625:15;;:::i;:::-;1663;;;;:6;:15;;;;;;;:38;;-1:-1:-1;;;1663:38:32;;:36;;;;:38;;:15;:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3511:277::-;3681:9;;:::i;:::-;3713:15;;;;:6;:15;;;;;;;:68;;-1:-1:-1;;;3713:68:32;;:57;;;;:68;;:15;3771:9;;3713: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;3794:276:32:-;3963:10;;:::i;:::-;3996:15;;;;:6;:15;;;;;;;:67;;-1:-1:-1;;;3996:67:32;;:56;;;;:67;;:15;4053:9;;3996:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4264:157:8:-;4363:7;4393:15;;;:6;:15;;;;;;;;:21;;-1:-1:-1;;;;;4393:21:8;;4264:157::o;3237:268:32:-;3404:6;3433:15;;;:6;:15;;;;;;:65;;-1:-1:-1;;;3433:65:32;;:54;;;;:65;;:15;3488:9;;3433: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;4076:311:32:-;4257:24;;:::i;:::-;4304:15;;;;:6;:15;;;;;;;:76;;-1:-1:-1;;;4304:76:32;;:65;;;;:76;;:15;4370:9;;4304: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;1891:225:32:-;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;:::-;2030:15:32::1;::::0;;;:6:::1;:15;::::0;;;;;;:43;;-1:-1:-1;;;2030:43:32;;:36:::1;::::0;::::1;::::0;:43:::1;::::0;:15;2067:5;;2030:43:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2088:21:32::1;::::0;2101:7;;-1:-1:-1;2088:21:32::1;::::0;-1:-1:-1;2088:21:32;;::::1;1891:225:::0;;;:::o;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;2677:277:32:-;2848:7;2878:15;;;:6;:15;;;;;;:69;;-1:-1:-1;;;2878:69:32;;:58;;;;:69;;:15;2937:9;;2878: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;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;2394:277:32:-;2565:7;2595:15;;;:6;:15;;;;;;:69;;-1:-1:-1;;;2595:69:32;;:58;;;;:69;;:15;2654:9;;2595:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2122:266::-;2290:5;2318:15;;;:6;:15;;;;;;:63;;-1:-1:-1;;;2318:63:32;;:52;;;;:63;;:15;2371:9;;2318: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;917:469:32:-;1023:10:8;1008:26;;;;:14;:26;;;;;;;;987:125;;;;-1:-1:-1;;;987:125:8;;;;;;;:::i;:::-;1259:67:32::1;1268:7:::0;1259:67:::1;;::::0;;::::1;::::0;::::1;1277:5:::0;1259:67:::1;:::i;:::-;1284:8;;1259:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;1259:67:32::1;::::0;-1:-1:-1;;;1259:67:32::1;::::0;;::::1;::::0;::::1;1294:9:::0;1259:67:::1;:::i;:::-;1305:6;1313:5;1320;1259:8;:67::i;:::-;1336:15;::::0;;;:6:::1;:15;::::0;;;;;;:43;;-1:-1:-1;;;1336:43:32;;:36:::1;::::0;::::1;::::0;:43:::1;::::0;:15;1373:5;;1336:43:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;917:469:::0;;;;;;;;;:::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;2426:1921::-;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;4393:177:32:-;-1:-1:-1;4523:7:32;;4393:177::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;;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;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;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;;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;3309:605:106:-;3365:9;;;3425:5;3450:31;;;3365:9;3507:6;3499:1;:5;;:14;;-1:-1:-1;3550:1:106;3545;3532:6;:10;;:14;3531:20;3527:24;;;;3561:9;3590:7;3573:4;3585:1;3581:5;;3573:14;:24;;-1:-1:-1;3630:1:106;3615:4;:12;;:16;3611:1;:20;3634:2;3611:25;3607:29;;3646:10;3668:4;3664:1;3659:2;:6;:13;;;;;;;-1:-1:-1;3682:8:106;3713:2;3697:4;:13;;:18;3693:22;;;-1:-1:-1;3738:2:106;3729:6;:11;-1:-1:-1;;3803:6:106;;;;3796:3;:14;:22;;;;:26;;;3768:1;3772:2;:6;;;3759:19;;;;;;;;-1:-1:-1;3729:11:106;-1:-1:-1;3796:26:106;-1:-1:-1;;;;3309:605:106:o;6480:383::-;6551:16;6583:5;6592:1;6583:10;:24;;;;6597:5;6606:1;6597:10;6583:24;:38;;;;6611:5;6620:1;6611:10;6583:38;:52;;;;6625:5;6634:1;6625:10;6583:52;:66;;;;6639:5;6648:1;6639:10;6583:66;:81;;;;6653:5;6662:2;6653:11;6583:81;:96;;;;6668:5;6677:2;6668:11;6583:96;6579:278;;;-1:-1:-1;6709:2:106;6579:278;;;6732:5;6741:1;6732:10;6728:129;;-1:-1:-1;6772:2:106;6728:129;;;6819:17;6831:4;6819:11;:17::i;:::-;:27;;6844:2;6819:27;;;6839:2;6819:27;6805:41;;;6480:383;-1:-1:-1;;;6480:383:106:o;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;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;97:33;72:20;97:33;:::i;661:128::-;736:13;;72796;;72789:21;79065:32;;79055:2;;79111:1;;79101:12;1400:188;1505:13;;1523:60;1505:13;1523:60;:::i;1760:162::-;1852:13;;1870:47;1852:13;1870:47;:::i;1929:180::-;2021:20;;2046:58;2021:20;2046:58;:::i;2116:184::-;2219:13;;2237:58;2219:13;2237:58;:::i;3252:170::-;3348:13;;3366:51;3348:13;3366:51;:::i;3429:166::-;3514:20;;3539:51;3514:20;3539:51;:::i;3602:170::-;3698:13;;3716:51;3698:13;3716:51;:::i;5650:166::-;;5768:3;5759:6;5754:3;5750:16;5746:26;5743:2;;;-1:-1;;5775:12;6702:161;;6815:3;6806:6;6801:3;6797:16;6793:26;6790:2;;;-1:-1;;6822:12;9883:881;;10019:4;10007:9;10002:3;9998:19;9994:30;9991:2;;;-1:-1;;10027:12;9991:2;10055:20;10019:4;10055:20;:::i;:::-;10046:29;;1017:6;1011:13;10141:16;10134:86;10284:2;10353:9;10349:22;1011:13;10284:2;10303:5;10299:16;10292:86;10440:2;10536:9;10532:22;2603:13;2621:60;2675:5;2621:60;:::i;:::-;10440:2;10455:16;;10448:113;10622:2;10714:22;;2603:13;2621:60;2603:13;2621:60;:::i;:::-;10622:2;10637:16;;10630:113;10641:5;9985:779;-1:-1;;9985:779::o;12299:158::-;;12409:3;12400:6;12395:3;12391:16;12387:26;12384:2;;;-1:-1;;12416:12;16261:241;;16365:2;16353:9;16344:7;16340:23;16336:32;16333:2;;;-1:-1;;16371:12;16333:2;85:6;72:20;97:33;124:5;97:33;:::i;16509:263::-;;16624:2;16612:9;16603:7;16599:23;16595:32;16592:2;;;-1:-1;;16630:12;16592:2;226:6;220:13;238:33;265:5;238:33;:::i;16779:257::-;;16891:2;16879:9;16870:7;16866:23;16862:32;16859:2;;;-1:-1;;16897:12;16859:2;742:6;736:13;79090:5;72796:13;72789:21;79068:5;79065:32;79055:2;;-1:-1;;79101:12;17043:241;;17147:2;17135:9;17126:7;17122:23;17118:32;17115:2;;;-1:-1;;17153:12;17115:2;-1:-1;863:20;;17109:175;-1:-1;17109:175::o;17291:263::-;;17406:2;17394:9;17385:7;17381:23;17377:32;17374:2;;;-1:-1;;17412:12;17374:2;-1:-1;1011:13;;17368:186;-1:-1;17368:186::o;17561:366::-;;;17682:2;17670:9;17661:7;17657:23;17653:32;17650:2;;;-1:-1;;17688:12;17650:2;876:6;863:20;17740:63;;17840:2;17883:9;17879:22;72:20;97:33;124:5;97:33;:::i;:::-;17848:63;;;;17644:283;;;;;:::o;17934:366::-;;;18055:2;18043:9;18034:7;18030:23;18026:32;18023:2;;;-1:-1;;18061:12;18023:2;-1:-1;;863:20;;;18213:2;18252:22;;;863:20;;-1:-1;18017:283::o;18307:489::-;;;;18444:2;18432:9;18423:7;18419:23;18415:32;18412:2;;;-1:-1;;18450:12;18412:2;-1:-1;;863:20;;;18602:2;18641:22;;863:20;;-1:-1;18710:2;18748:22;;;5412:20;;18406:390;-1:-1;18406:390::o;18803:489::-;;;;18940:2;18928:9;18919:7;18915:23;18911:32;18908:2;;;-1:-1;;18946:12;18908:2;863:20;;;-1:-1;19098:2;19136:22;;1140:20;-1:-1;;;;;;72962:78;;79309:34;;79299:2;;-1:-1;;79347:12;79299:2;19106:62;-1:-1;19205:2;19244:22;;72:20;97:33;72:20;97:33;:::i;:::-;19213:63;;;;18902:390;;;;;:::o;19299:425::-;;;19449:3;19437:9;19428:7;19424:23;19420:33;19417:2;;;-1:-1;;19456:12;19417:2;876:6;863:20;19508:63;;19626:82;19700:7;19608:2;19680:9;19676:22;19626:82;:::i;:::-;19616:92;;19411:313;;;;;:::o;19731:1463::-;;;;;;;;;;20078:4;20066:9;20057:7;20053:23;20049:34;20046:2;;;-1:-1;;20086:12;20046:2;876:6;863:20;20138:63;;20256:82;20330:7;20238:2;20310:9;20306:22;20256:82;:::i;:::-;20246:92;;20394:79;20465:7;20375:3;20445:9;20441:22;20394:79;:::i;:::-;20384:89;;20538:4;20527:9;20523:20;20510:34;20564:18;;20556:6;20553:30;20550:2;;;-1:-1;;20586:12;20550:2;20687:6;20676:9;20672: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;;20564:18;501:6;498:30;495:2;;;-1:-1;;531:12;495:2;626:3;20238:2;;610:6;606:17;567:6;592:32;;589:41;586:2;;;-1:-1;;633:12;586:2;20238;563:17;;-1:-1;20606:98;;-1:-1;20761:87;;-1:-1;20840:7;20741:4;20816:22;;20761:87;:::i;:::-;20751:97;;20905:53;20950:7;20885:4;20930:9;20926:22;20905:53;:::i;:::-;20895:63;;21015:53;21060:7;20995:4;21040:9;21036:22;21015:53;:::i;:::-;21005:63;;21125:53;21170:7;21105:4;21150:9;21146:22;21125:53;:::i;:::-;21115:63;;20040:1154;;;;;;;;;;;:::o;21201:419::-;;;21348:3;21336:9;21327:7;21323:23;21319:33;21316:2;;;-1:-1;;21355:12;21316:2;876:6;863:20;21407:63;;21525:79;21596:7;21507:2;21576:9;21572:22;21525:79;:::i;22000:271::-;;22119:2;22107:9;22098:7;22094:23;22090:32;22087:2;;;-1:-1;;22125:12;22087:2;4630:6;4617:20;4642:48;4684:5;4642:48;:::i;22278:396::-;;;22414:2;22402:9;22393:7;22389:23;22385:32;22382:2;;;-1:-1;;22420:12;22382:2;4630:6;4617:20;4642:48;4684:5;4642:48;:::i;:::-;22472:78;22587:2;22626:22;;;;15913:20;;-1:-1;;;22376:298::o;22949:306::-;;23085:3;23073:9;23064:7;23060:23;23056:33;23053:2;;;-1:-1;;23092:12;23053:2;6008:20;23085:3;6008:20;:::i;:::-;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6095:75;;6245:2;6299:22;;72:20;97:33;72:20;97:33;:::i;:::-;6245:2;6260:16;;6253:75;6404:2;6458:22;;72:20;97:33;72:20;97:33;:::i;:::-;6404:2;6419:16;;6412:75;6567:2;6621:22;;72:20;97:33;72:20;97:33;:::i;:::-;6567:2;6582:16;;6575:75;6586:5;23047:208;-1:-1;;;23047:208::o;23262:318::-;;23404:3;23392:9;23383:7;23379:23;23375:33;23372:2;;;-1:-1;;23411:12;23372:2;7057:22;7072:6;7057:22;:::i;:::-;7169:78;7243:3;7219:22;7169:78;:::i;:::-;7151:16;7144:104;7346:74;7416:3;7313:2;7396:9;7392:22;7346:74;:::i;:::-;7313:2;7332:5;7328:16;7321:100;7523:78;7597:3;7490:2;7577:9;7573:22;7523:78;:::i;:::-;7490:2;7509:5;7505:16;7498:104;7710:84;7790:3;7677:2;7770:9;7766:22;7710:84;:::i;:::-;7677:2;7696:5;7692:16;7685:110;7907:87;7990:3;7873;7970:9;7966:22;7907:87;:::i;:::-;7873:3;7893:5;7889:16;7882:113;8106:86;8188:3;8072;8168:9;8164:22;8106:86;:::i;:::-;8072:3;8092:5;8088:16;8081:112;8306:85;8387:3;8272;8367:9;8363:22;8306:85;:::i;:::-;8272:3;8292:5;8288:16;8281:111;8491:74;8561:3;8457;8541:9;8537:22;8491:74;:::i;:::-;8457:3;8473:16;;8466:100;8633:3;8701:22;;;16061:13;8649:18;;;8642:88;8799:3;8867:22;;;16061:13;8815:18;;;8808:88;8970:3;9037:22;;;5558:13;8986:18;;;8979:87;9130:3;9197:22;;;5558:13;9146:18;;;9139:87;9310:3;9377:22;;;5558:13;9326:18;;;9319:87;9482:3;9518:96;9610:3;9586:22;;;9518:96;:::i;:::-;9498:18;;;9491:124;9727:96;9819:3;9691;9795:22;;9727:96;:::i;:::-;9718:6;9707:18;;9700:124;9711:5;23366:214;-1:-1;;;23366:214::o;23587:336::-;;23738:3;23726:9;23717:7;23713:23;23709:33;23706:2;;;-1:-1;;23745:12;23706:2;23807:100;23899:7;23875:22;23807:100;:::i;23930:308::-;;24067:3;24055:9;24046:7;24042:23;24038:33;24035:2;;;-1:-1;;24074:12;24035:2;10946:20;24067:3;10946:20;:::i;:::-;11077:22;16061:13;11027:16;11020:86;11164:2;11240:9;11236:22;2219:13;2237:58;2289:5;2237:58;:::i;:::-;11164:2;11179:16;;11172:93;11323:2;11395:22;;1852:13;1870:47;1852:13;1870:47;:::i;:::-;11323:2;11338:16;;11331:93;11519:57;11572:3;11486:2;11548:22;;11519:57;:::i;24245:305::-;;24381:2;24369:9;24360:7;24356:23;24352:32;24349:2;;;-1:-1;;24387:12;24349:2;11778:20;24381:2;11778:20;:::i;:::-;11909:22;16061:13;11859:16;11852:86;11996:2;12072:9;12068:22;2219:13;2237:58;2289:5;2237:58;:::i;:::-;11996:2;12011:16;;12004:93;12192:57;12245:3;12159:2;12221:22;;12192:57;:::i;:::-;12159:2;12174:16;;12167:83;12178:5;24343:207;-1:-1;;;24343:207::o;24557:290::-;;24685:3;;24673:9;24664:7;24660:23;24656:33;24653:2;;;-1:-1;;24692:12;24653:2;12634:22;24685:3;12634:22;:::i;:::-;12753:74;12823:3;12799:22;12753:74;:::i;:::-;12728:100;;12895:2;12949:22;;;15913:20;12910:16;;;12903:75;13052:2;13106:22;;;15913:20;13067:16;;;13060:75;13204:2;13258:22;;;15913:20;13219:16;;;13212:75;13356:3;13411:22;;;15913:20;13372:16;;;13365:75;13512:3;13567:22;;;15913:20;13528:16;;;13521:75;13666:3;13721:22;;;15913:20;13682:16;;;13675:75;13824:3;13878:22;;;5412:20;13840:16;;;13833:74;13979:3;14035:22;;;5412:20;13995:18;;;13988:76;14131:3;14187:22;;;5412:20;14147:18;;;14140:76;14292:3;14348:22;;;5412:20;14308:18;;;14301:76;14459:3;14515:22;;;5412:20;14475:18;;;14468:76;14626:3;14682:22;;;5412:20;14642:18;;;14635:76;14798:3;14854:22;;;5412:20;14814:18;;;14807:76;14954:3;15010:22;;;5412:20;14970:18;;;14963:76;15112:3;15168:22;;;5412:20;15128:18;;;15121:76;15262:3;15318:22;;;5412:20;15278:18;;;15271:76;15421:3;15477:22;;;5412:20;15437:18;;;15430:76;15575:3;15631:22;;;5412:20;15591:18;;;15584:76;15733:3;15789:22;;;5412:20;15749:18;;;15742:76;;;;-1:-1;12735:16;;24647:200;-1:-1;;24647:200::o;25124:259::-;;25237:2;25225:9;25216:7;25212:23;25208:32;25205:2;;;-1:-1;;25243:12;25205:2;16206:6;16200:13;75375:4;81267:5;75364:16;81244:5;81241:33;81231:2;;-1:-1;;81278:12;27336:166;77455:1;77448:5;77445:12;77435:2;;77461:9;77435:2;27422:75;;27416:86::o;27690:140::-;73301:47;73342:5;73301:47;:::i;27992:162::-;73453:58;73505:5;73453:58;:::i;29046:148::-;78056:2;78049:5;78046:13;78036:2;;78063:9;29364:148;78173:2;78166:5;78163:13;78153:2;;78180:9;46050:1056;876:6;863:20;26811:3;26804:37;70510:2;46316:16;70501:12;863:20;70510:2;46591:3;46587:14;26804:37;46736:4;46729:5;46725:16;2401:20;2426:60;2480:5;2426:60;:::i;:::-;73618;73672:5;73618:60;:::i;:::-;46736:4;46829:14;;28778:75;46977:4;46966:16;;2401:20;2426:60;2401:20;2426:60;:::i;:::-;73618;73672:5;73618:60;:::i;:::-;75967:51;46977:4;47074:3;47070:14;28424:75;;46188:918;;:::o;47172:852::-;47401:16;47395:23;26811:3;26804:37;47569:4;47562:5;47558:16;47552:23;47569:4;47633:3;47629:14;26804:37;47724:4;47717:5;47713:16;47707:23;73618:60;73672:5;73618:60;:::i;:::-;47724:4;47809:14;;28778:75;47903:4;47892:16;;47886:23;73618:60;47886:23;73618:60;:::i;54462:222::-;-1:-1;;;;;75159:54;;;;25633:37;;54589:2;54574:18;;54560:124::o;54691:333::-;-1:-1;;;;;75159:54;;;25633:37;;75159:54;;55010:2;54995:18;;25633:37;54846:2;54831:18;;54817:207::o;55031:370::-;55208:2;55222:47;;;69885:12;;55193:18;;;70160:19;;;55031:370;;55208:2;69739:14;;;;70200;;;;55031:370;26241:260;26266:6;26263:1;26260:13;26241:260;;;26327:13;;26804:37;;70015:14;;;;25544;;;;26288:1;26281:9;26241:260;;;-1:-1;55275:116;;55179:222;-1:-1;;;;;;55179:222::o;55408:210::-;72796:13;;72789:21;26586:34;;55529:2;55514:18;;55500:118::o;55625:317::-;72796:13;;72789:21;26586:34;;55928:2;55913:18;;26804:37;55772:2;55757:18;;55743:199::o;55949:222::-;26804:37;;;56076:2;56061:18;;56047:124::o;56178:444::-;26804:37;;;-1:-1;;;;;75159:54;;;56525:2;56510:18;;25633:37;75159:54;56608:2;56593:18;;25633:37;56361:2;56346:18;;56332:290::o;56629:459::-;26804:37;;;-1:-1;;;57074:2;57059:18;;31985:26;56847:2;56832:18;;56818:270::o;57095:459::-;26804:37;;;-1:-1;;;57540:2;57525:18;;34138:32;57313:2;57298:18;;57284:270::o;57561:459::-;26804:37;;;-1:-1;;;58006:2;57991:18;;35849:32;57779:2;57764:18;;57750:270::o;58027:459::-;26804:37;;;-1:-1;;;58472:2;58457:18;;36032:34;58245:2;58230:18;;58216:270::o;58493:218::-;-1:-1;;;;;;72962:78;;;;27288:36;;58618:2;58603:18;;58589:122::o;58718:359::-;58886:2;58871:18;;78533:2;78523:13;;78513:2;;78540:9;78513:2;30458:63;;;59063:2;59048:18;26804:37;58857:220;:::o;59309:416::-;59509:2;59523:47;;;31665:2;59494:18;;;70160:19;31701:34;70200:14;;;31681:55;31770:32;31756:12;;;31749:54;31822:12;;;59480:245::o;59732:416::-;59932:2;59946:47;;;32250:2;59917:18;;;70160:19;32286:34;70200:14;;;32266:55;32355:31;32341:12;;;32334:53;32406:12;;;59903:245::o;60155:416::-;60355:2;60369:47;;;32657:2;60340:18;;;70160:19;32693:34;70200:14;;;32673:55;-1:-1;;;32748:12;;;32741:30;32790:12;;;60326:245::o;60578:416::-;60778:2;60792:47;;;33041:2;60763:18;;;70160:19;33077:34;70200:14;;;33057:55;33146:27;33132:12;;;33125:49;33193:12;;;60749:245::o;61001:416::-;61201:2;61215:47;;;33444:2;61186:18;;;70160:19;33480:34;70200:14;;;33460:55;-1:-1;;;33535:12;;;33528:39;33586:12;;;61172:245::o;61424:416::-;61624:2;61638:47;;;33837:2;61609:18;;;70160:19;33873:34;70200:14;;;33853:55;-1:-1;;;33928:12;;;33921:35;33975:12;;;61595:245::o;61847:416::-;62047:2;62061:47;;;34409:2;62032:18;;;70160:19;34445:34;70200:14;;;34425:55;-1:-1;;;34500:12;;;34493:44;34556:12;;;62018:245::o;62270:416::-;62470:2;62484:47;;;34807:2;62455:18;;;70160:19;34843:34;70200:14;;;34823:55;34912:26;34898:12;;;34891:48;34958:12;;;62441:245::o;62693:416::-;62893:2;62907:47;;;35209:2;62878:18;;;70160:19;35245:34;70200:14;;;35225:55;-1:-1;;;35300:12;;;35293:33;35345:12;;;62864:245::o;63116:416::-;63316:2;63330:47;;;63301:18;;;70160:19;35632:34;70200:14;;;35612:55;35686:12;;;63287:245::o;63539:416::-;63739:2;63753:47;;;36305:2;63724:18;;;70160:19;36341:34;70200:14;;;36321:55;36410:25;36396:12;;;36389:47;36455:12;;;63710:245::o;63962:416::-;64162:2;64176:47;;;36706:2;64147:18;;;70160:19;36742:34;70200:14;;;36722:55;36811:27;36797:12;;;36790:49;36858:12;;;64133:245::o;64385:416::-;64585:2;64599:47;;;37109:2;64570:18;;;70160:19;37145:34;70200:14;;;37125:55;-1:-1;;;37200:12;;;37193:39;37251:12;;;64556:245::o;64808:416::-;65008:2;65022:47;;;37502:2;64993:18;;;70160:19;37538:34;70200:14;;;37518:55;-1:-1;;;37593:12;;;37586:44;37649:12;;;64979:245::o;65231:416::-;65431:2;65445:47;;;37900:2;65416:18;;;70160:19;37936:34;70200:14;;;37916:55;38005:34;37991:12;;;37984:56;-1:-1;;;38060:12;;;38053:26;38098:12;;;65402:245::o;65654:351::-;38410:23;;-1:-1;;;;;75159:54;;;25633:37;;38595:4;38584:16;;;38578:23;75159:54;;38655:14;;;25633:37;38764:4;38753:16;;;38747:23;75159:54;;38824:14;;;25633:37;38937:4;38926:16;;;38920:23;75159:54;38997:14;;;25633:37;;;;65845:3;65830:19;;65816:189::o;66305:405::-;26804:37;;;66696:2;66681:18;;26804:37;66492:2;66477:18;;66463:247::o;66717:518::-;26804:37;;;66960:3;66945:19;;67221:2;71709:12;;;;39521:87;;67206:18;;71665:57;71709:12;39498:16;71665:57;:::i;:::-;39521:87;:::i;:::-;39674:64;39721:16;39714:5;39674:64;:::i;:::-;39744:83;39812:14;67210:9;39812:14;39798:12;39744:83;:::i;:::-;;;39897:68;39812:14;39952:5;39948:16;39941:5;39897:68;:::i;:::-;39971:87;40043:14;67210:9;40043:14;40029:12;39971:87;:::i;:::-;;40134:74;40043:14;40195:5;40191:16;40184:5;40134:74;:::i;:::-;40214:93;40292:14;67210:9;40292:14;40278:12;40214:93;:::i;:::-;;40386:77;40292:14;40450:5;40446:16;40439:5;40386:77;:::i;:::-;40469:96;40550:14;67210:9;40550:14;40536:12;40469:96;:::i;:::-;;40643:76;40550:14;40706:5;40702:16;40695:5;40643:76;:::i;:::-;40725:95;40805:14;67210:9;40805:14;40791:12;40725:95;:::i;:::-;;40900:75;40805:14;40962:5;40958:16;40951:5;40900:75;:::i;:::-;40981:94;41060:14;67210:9;41060:14;41046:12;40981:94;:::i;:::-;;41141:64;41060:14;41192:5;41188:16;41181:5;41141:64;:::i;:::-;41279:14;41211:83;41279:14;67210:9;41279:14;41265:12;41211:83;:::i;:::-;41476:16;;;41279:14;41399:5;41395:18;15913:20;41476:16;67210:9;41476:16;26804:37;;41677:16;41476;41600:5;41596:18;15913:20;41677:16;67210:9;41677:16;26804:37;41880:16;;;41677;41805:5;41801:18;5412:20;41880:16;67210:9;41880:16;26804:37;;42073:16;41880;41998:5;41994:18;5412:20;42073:16;67210:9;42073:16;26804:37;42286:16;;;42073;42211:5;42207:18;5412:20;42286:16;67210:9;42286:16;26804:37;;42476:147;42606:16;67210:9;42606:16;42286;42455:5;42451:18;42476:147;:::i;:::-;;42796;42926:16;67210:9;42926:16;42782:6;42775:5;42771:18;42796:147;:::i;67242:331::-;;67423:3;67412:9;67408:19;67400:27;;43264:79;43328:14;43241:16;43235:23;43264:79;:::i;:::-;43426:4;43419:5;43415:16;43409:23;43438:75;43426:4;43502:3;43498:14;43484:12;43438:75;:::i;:::-;;43600:4;43593:5;43589:16;43583:23;43612:79;43600:4;43680:3;43676:14;43662:12;43612:79;:::i;:::-;;43784:4;43777:5;43773:16;43767:23;43796:85;43784:4;43870:3;43866:14;43852:12;43796:85;:::i;:::-;;43977:4;43970:5;43966:16;43960:23;43989:88;43977:4;44066:3;44062:14;44048:12;43989:88;:::i;:::-;;44172:4;44165:5;44161:16;44155:23;44184:87;44172:4;44260:3;44256:14;44242:12;44184:87;:::i;:::-;;44368:4;44361:5;44357:16;44351:23;44380:86;44368:4;44455:3;44451:14;44437:12;44380:86;:::i;:::-;;44549:4;44542:5;44538:16;44532:23;44561:75;44549:4;44625:3;44621:14;44607:12;44561:75;:::i;:::-;-1:-1;44721:6;44710:18;;;44704:25;44783:16;;;26804:37;44887:6;44876:18;;;44870:25;44949:16;;;26804:37;45058:6;45047:18;;;45041:25;45118:16;;;26804:37;45217:6;45206:18;;;45200:25;45277:16;;;26804:37;45396:6;45385:18;;;45379:25;45456:16;;;26804:37;45567:6;45556:18;;;45550:25;45581:137;45701:16;;;45550:25;45581:137;:::i;:::-;;;45812:6;45805:5;45801:18;45795:25;45826:137;45955:6;45950:3;45946:16;45932:12;45826:137;:::i;67580:367::-;67779:3;67764:19;;67794:143;67768:9;67910:6;67794:143;:::i;67954:311::-;49190:23;;26804:37;;49358:4;49347:16;;49341:23;68125:3;68110:19;;;73453:58;49341:23;73453:58;:::i;:::-;49358:4;49423:14;;28076:73;49514:4;49503:16;;49497:23;73301:47;49497:23;73301:47;:::i;:::-;75650:38;49514:4;49583:3;49579:14;27763:62;;49674:4;49667:5;49663:16;49657:23;72796:13;72789:21;49674:4;49732:3;49728:14;26586:34;68096:169;;;;:::o;68272:306::-;49998:23;;26804:37;;50166:4;50155:16;;50149:23;68441:2;68426:18;;;73453:58;50149:23;73453:58;:::i;:::-;75802:49;50166:4;50235:3;50231:14;28076:73;;50326:4;50319:5;50315:16;50309:23;72796:13;72789:21;50326:4;50384:3;50380:14;26586:34;68412:166;;;;:::o;68585:319::-;;68760:3;68749:9;68745:19;68737:27;;50711:86;50782:14;50688:16;50682:23;50711:86;:::i;:::-;50882:4;50871:16;;;50865:23;50942:14;;;26804:37;51049:4;51038:16;;;51032:23;51109:14;;;26804:37;51211:4;51200:16;;;51194:23;51271:14;;;26804:37;51373:4;51362:16;;;51356:23;51433:14;;;26804:37;51538:4;51527:16;;;51521:23;51598:14;;;26804:37;51701:4;51690:16;;;51684:23;51761:14;;;26804:37;51868:4;51857:16;;;51851:23;51926:14;;;26804:37;52031:6;52020:18;;;52014:25;52091:16;;;26804:37;52193:6;52182:18;;;52176:25;52253:16;;;26804:37;52364:6;52353:18;;;52347:25;52424:16;;;26804:37;52541:6;52530:18;;;52524:25;52601:16;;;26804:37;52718:6;52707:18;;;52701:25;52778:16;;;26804:37;52900:6;52889:18;;;52883:25;52960:16;;;26804:37;53066:6;53055:18;;;53049:25;53126:16;;;26804:37;53234:6;53223:18;;;53217:25;53294:16;;;26804:37;53394:6;53383:18;;;53377:25;53454:16;;;26804:37;53563:6;53552:18;;;53546:25;53623:16;;;26804:37;53727:6;53716:18;;;53710:25;53787:16;;;26804:37;53895:6;53884:18;;;53878:25;53955:16;;;;26804:37;;;;68731:173;:::o;69140:214::-;75375:4;75364:16;;;;54415:35;;69263:2;69248:18;;69234:120::o;69361:256::-;69423:2;69417:9;69449:17;;;69524:18;69509:34;;69545:22;;;69506:62;69503:2;;;69581:1;;69571:12;69503:2;69423;69590:22;69401:216;;-1:-1;69401:216::o;70529:173::-;;1316:6;1303:20;1328:60;1382:5;1328:60;:::i;70711:147::-;;1689:6;1676:20;1701:47;1742:5;1701:47;:::i;70867:169::-;;2034:6;2021:20;2046:58;2098:5;2046:58;:::i;71409:155::-;;3177:6;3164:20;3189:51;3234:5;3189:51;:::i;77484:105::-;77567:1;77560:5;77557:12;77547:2;;77573:9;77547:2;77541:48;:::o;77596:116::-;77690:1;77683:5;77680:12;77670:2;;77696:9;77719:118;77815:1;77808:5;77805:12;77795:2;;77821:9;78885:117;-1:-1;;;;;75159:54;;78944:35;;78934:2;;78993:1;;78983:12;79373:121;79469:1;79462:5;79459:12;79449:2;;79485:1;;79475:12;79501:108;79584:1;79577:5;79574:12;79564:2;;79600:1;;79590:12;79616:119;79710:1;79703:5;79700:12;79690:2;;79726:1;;79716:12;79742:121;79838:1;79831:5;79828:12;79818:2;;79854:1;;79844:12;79998:113;80085:2;80078:5;80075:13;80065:2;;80102:1;;80092:12;80118:113;80205:2;80198:5;80195:13;80185:2;;80222:1;;80212:12;80490:110;80574:2;80567:5;80564:13;80554:2;;80591:1;;80581:12",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"../Base/SharedTypes.sol\";\nimport \"../Base/AssetRegistry/BaseRegistry.sol\";\nimport \"./CECEncoder.sol\";\nimport \"./ICECRegistry.sol\";\n\n\n/**\n * @title CECRegistry\n * @notice Registry for ACTUS Protocol assets\n */\ncontract CECRegistry is BaseRegistry, ICECRegistry {\n\n    using CECEncoder 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 (CECTerms)\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        CECTerms 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].encodeAndSetCECTerms(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 (CECTerms memory)\n    {\n        return assets[assetId].decodeAndGetCECTerms();\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, CECTerms calldata terms)\n        external\n        override\n        isAuthorized (assetId)\n    {\n        assets[assetId].encodeAndSetCECTerms(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].decodeAndGetEnumValueForCECAttribute(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].decodeAndGetAddressValueForForCECAttribute(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].decodeAndGetBytes32ValueForForCECAttribute(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].decodeAndGetUIntValueForForCECAttribute(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].decodeAndGetIntValueForForCECAttribute(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].decodeAndGetPeriodValueForForCECAttribute(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].decodeAndGetCycleValueForForCECAttribute(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].decodeAndGetContractReferenceValueForCECAttribute(attribute);\n    }\n\n    function getNextCyclicEvent(bytes32 /* assetId */)\n        internal\n        view\n        override(TermsRegistry)\n        returns (bytes32)\n    {\n        return bytes32(0);\n    }\n}\n",
  "sourcePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEC/CECRegistry.sol",
  "ast": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEC/CECRegistry.sol",
    "exportedSymbols": {
      "CECRegistry": [
        9436
      ]
    },
    "id": 9437,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9159,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:32"
      },
      {
        "id": 9160,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:32"
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol",
        "file": "../Base/SharedTypes.sol",
        "id": 9161,
        "nodeType": "ImportDirective",
        "scope": 9437,
        "sourceUnit": 7865,
        "src": "101:33:32",
        "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": 9162,
        "nodeType": "ImportDirective",
        "scope": 9437,
        "sourceUnit": 4422,
        "src": "135:48:32",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEC/CECEncoder.sol",
        "file": "./CECEncoder.sol",
        "id": 9163,
        "nodeType": "ImportDirective",
        "scope": 9437,
        "sourceUnit": 9158,
        "src": "184:26:32",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEC/ICECRegistry.sol",
        "file": "./ICECRegistry.sol",
        "id": 9164,
        "nodeType": "ImportDirective",
        "scope": 9437,
        "sourceUnit": 9479,
        "src": "211:28:32",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9166,
              "name": "BaseRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4421,
              "src": "342:12:32",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseRegistry_$4421",
                "typeString": "contract BaseRegistry"
              }
            },
            "id": 9167,
            "nodeType": "InheritanceSpecifier",
            "src": "342:12:32"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9168,
              "name": "ICECRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9478,
              "src": "356:12:32",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ICECRegistry_$9478",
                "typeString": "contract ICECRegistry"
              }
            },
            "id": 9169,
            "nodeType": "InheritanceSpecifier",
            "src": "356:12:32"
          }
        ],
        "contractDependencies": [
          4083,
          4125,
          4421,
          4478,
          4500,
          4539,
          4579,
          4826,
          4924,
          5716,
          5776,
          6817,
          6894,
          6982,
          9478,
          24758,
          24885,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 9165,
          "nodeType": "StructuredDocumentation",
          "src": "242:75:32",
          "text": " @title CECRegistry\n @notice Registry for ACTUS Protocol assets"
        },
        "fullyImplemented": true,
        "id": 9436,
        "linearizedBaseContracts": [
          9436,
          9478,
          4500,
          4421,
          4539,
          4826,
          4579,
          5716,
          24885,
          24758,
          4924,
          6817,
          5776,
          6894,
          6982,
          4083,
          4125,
          4478,
          38485,
          38376
        ],
        "name": "CECRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 9172,
            "libraryName": {
              "contractScope": null,
              "id": 9170,
              "name": "CECEncoder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9157,
              "src": "382:10:32",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CECEncoder_$9157",
                "typeString": "library CECEncoder"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "376:27:32",
            "typeName": {
              "contractScope": null,
              "id": 9171,
              "name": "Asset",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4466,
              "src": "397:5:32",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                "typeString": "struct Asset"
              }
            }
          },
          {
            "body": {
              "id": 9177,
              "nodeType": "Block",
              "src": "470:2:32",
              "statements": []
            },
            "documentation": null,
            "id": 9178,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [],
                "id": 9175,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9174,
                  "name": "BaseRegistry",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4421,
                  "src": "451:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseRegistry_$4421_$",
                    "typeString": "type(contract BaseRegistry)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "451:14:32"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 9173,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "425:2:32"
            },
            "returnParameters": {
              "id": 9176,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "470:0:32"
            },
            "scope": 9436,
            "src": "414:58:32",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              9463
            ],
            "body": {
              "id": 9219,
              "nodeType": "Block",
              "src": "1249:137:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9203,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9181,
                        "src": "1268:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9204,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9185,
                        "src": "1277:5:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9205,
                        "name": "schedule",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9188,
                        "src": "1284:8:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9206,
                        "name": "ownership",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9190,
                        "src": "1294:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9207,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9192,
                        "src": "1305:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9208,
                        "name": "actor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9194,
                        "src": "1313:5:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9209,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9196,
                        "src": "1320:5:32",
                        "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": 9202,
                      "name": "setAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4324,
                      "src": "1259:8:32",
                      "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": 9210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1259:67:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9211,
                  "nodeType": "ExpressionStatement",
                  "src": "1259:67:32"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9216,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9183,
                        "src": "1373:5:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                          "typeString": "struct CECTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                          "typeString": "struct CECTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9212,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1336:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9214,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9213,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9181,
                          "src": "1343:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1336:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9215,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetCECTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8513,
                      "src": "1336:36:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_CECTerms_$22799_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct CECTerms memory)"
                      }
                    },
                    "id": 9217,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1336:43:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9218,
                  "nodeType": "ExpressionStatement",
                  "src": "1336:43:32"
                }
              ]
            },
            "documentation": {
              "id": 9179,
              "nodeType": "StructuredDocumentation",
              "src": "478:434:32",
              "text": " @notice\n @param assetId id of the asset\n @param terms asset specific terms (CECTerms)\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": "f82277d2",
            "id": 9220,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9200,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9199,
                  "name": "onlyApprovedActors",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4187,
                  "src": "1226:18:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1226:18:32"
              }
            ],
            "name": "registerAsset",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9198,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1209:8:32"
            },
            "parameters": {
              "id": 9197,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9181,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9220,
                  "src": "949:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9180,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "949:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9183,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9220,
                  "src": "974:23:32",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                    "typeString": "struct CECTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9182,
                    "name": "CECTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22799,
                    "src": "974:8:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CECTerms_$22799_storage_ptr",
                      "typeString": "struct CECTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9185,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9220,
                  "src": "1007:20:32",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9184,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1007:5:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9188,
                  "mutability": "mutable",
                  "name": "schedule",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9220,
                  "src": "1037:27:32",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9186,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1037:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 9187,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1037:9:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9190,
                  "mutability": "mutable",
                  "name": "ownership",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9220,
                  "src": "1074:33:32",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                    "typeString": "struct AssetOwnership"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9189,
                    "name": "AssetOwnership",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7849,
                    "src": "1074:14:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                      "typeString": "struct AssetOwnership"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9192,
                  "mutability": "mutable",
                  "name": "engine",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9220,
                  "src": "1117:14:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9191,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1117:7:32",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9194,
                  "mutability": "mutable",
                  "name": "actor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9220,
                  "src": "1141:13:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9193,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1141:7:32",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9196,
                  "mutability": "mutable",
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9220,
                  "src": "1164:13:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9195,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1164:7:32",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "939:244:32"
            },
            "returnParameters": {
              "id": 9201,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1249:0:32"
            },
            "scope": 9436,
            "src": "917:469:32",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              9470
            ],
            "body": {
              "id": 9235,
              "nodeType": "Block",
              "src": "1646:62:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9229,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1663:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9231,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9230,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9223,
                          "src": "1670:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1663:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9232,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCECTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8748,
                      "src": "1663:36:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_CECTerms_$22799_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct CECTerms memory)"
                      }
                    },
                    "id": 9233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1663:38:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                      "typeString": "struct CECTerms memory"
                    }
                  },
                  "functionReturnParameters": 9228,
                  "id": 9234,
                  "nodeType": "Return",
                  "src": "1656:45:32"
                }
              ]
            },
            "documentation": {
              "id": 9221,
              "nodeType": "StructuredDocumentation",
              "src": "1392:129:32",
              "text": " @notice Returns the terms of an asset.\n @param assetId id of the asset\n @return terms of the asset"
            },
            "functionSelector": "6be39bda",
            "id": 9236,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9225,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1599:8:32"
            },
            "parameters": {
              "id": 9224,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9223,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9236,
                  "src": "1544:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9222,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1544:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1543:17:32"
            },
            "returnParameters": {
              "id": 9228,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9227,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9236,
                  "src": "1625:15:32",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                    "typeString": "struct CECTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9226,
                    "name": "CECTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22799,
                    "src": "1625:8:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CECTerms_$22799_storage_ptr",
                      "typeString": "struct CECTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1624:17:32"
            },
            "scope": 9436,
            "src": "1526:182:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              9477
            ],
            "body": {
              "id": 9259,
              "nodeType": "Block",
              "src": "2020:96:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9252,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9241,
                        "src": "2067:5:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                          "typeString": "struct CECTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                          "typeString": "struct CECTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9248,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2030:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9250,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9249,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9239,
                          "src": "2037:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2030:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9251,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetCECTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8513,
                      "src": "2030:36:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_CECTerms_$22799_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct CECTerms memory)"
                      }
                    },
                    "id": 9253,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2030:43:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9254,
                  "nodeType": "ExpressionStatement",
                  "src": "2030:43:32"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9256,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9239,
                        "src": "2101:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9255,
                      "name": "UpdatedTerms",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6902,
                      "src": "2088:12:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 9257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2088:21:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9258,
                  "nodeType": "EmitStatement",
                  "src": "2083:26:32"
                }
              ]
            },
            "documentation": {
              "id": 9237,
              "nodeType": "StructuredDocumentation",
              "src": "1714:172:32",
              "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": "c364ac9c",
            "id": 9260,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9245,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9239,
                    "src": "2007:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9246,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9244,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "1993:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1993:22:32"
              }
            ],
            "name": "setTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9243,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1976:8:32"
            },
            "parameters": {
              "id": 9242,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9239,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9260,
                  "src": "1909:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9238,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1909:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9241,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9260,
                  "src": "1926:23:32",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                    "typeString": "struct CECTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9240,
                    "name": "CECTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22799,
                    "src": "1926:8:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CECTerms_$22799_storage_ptr",
                      "typeString": "struct CECTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1908:42:32"
            },
            "returnParameters": {
              "id": 9247,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2020:0:32"
            },
            "scope": 9436,
            "src": "1891:225:32",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6830,
              6911
            ],
            "body": {
              "id": 9279,
              "nodeType": "Block",
              "src": "2301:87:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9276,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9264,
                        "src": "2371:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9272,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2318:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9274,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9273,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9262,
                          "src": "2325:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2318:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9275,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetEnumValueForCECAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8929,
                      "src": "2318:52:32",
                      "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": 9277,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2318:63:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 9271,
                  "id": 9278,
                  "nodeType": "Return",
                  "src": "2311:70:32"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "ecef5577",
            "id": 9280,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEnumValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9268,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 9266,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2242:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 9267,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2258:13:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2233:39:32"
            },
            "parameters": {
              "id": 9265,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9262,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9280,
                  "src": "2161:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9261,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2161:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9264,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9280,
                  "src": "2178:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9263,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2178:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2160:36:32"
            },
            "returnParameters": {
              "id": 9271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9270,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9280,
                  "src": "2290:5:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 9269,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2290:5:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2289:7:32"
            },
            "scope": 9436,
            "src": "2122:266:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6839,
              6920
            ],
            "body": {
              "id": 9299,
              "nodeType": "Block",
              "src": "2578:93:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9296,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9284,
                        "src": "2654:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9292,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2595:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9294,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9293,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9282,
                          "src": "2602:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2595:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9295,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetAddressValueForForCECAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8944,
                      "src": "2595:58:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_pure$_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) pure returns (address)"
                      }
                    },
                    "id": 9297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2595:69:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 9291,
                  "id": 9298,
                  "nodeType": "Return",
                  "src": "2588:76:32"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "eb012559",
            "id": 9300,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAddressValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9288,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 9286,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2517:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 9287,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2533:13:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2508:39:32"
            },
            "parameters": {
              "id": 9285,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9282,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9300,
                  "src": "2436:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9281,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2436:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9284,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9300,
                  "src": "2453:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9283,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2453:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2435:36:32"
            },
            "returnParameters": {
              "id": 9291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9290,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9300,
                  "src": "2565:7:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9289,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2565:7:32",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2564:9:32"
            },
            "scope": 9436,
            "src": "2394:277:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6848,
              6929
            ],
            "body": {
              "id": 9319,
              "nodeType": "Block",
              "src": "2861:93:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9316,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9304,
                        "src": "2937:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9312,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2878:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9314,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9313,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9302,
                          "src": "2885:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2878:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9315,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetBytes32ValueForForCECAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8959,
                      "src": "2878:58:32",
                      "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": 9317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2878:69:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 9311,
                  "id": 9318,
                  "nodeType": "Return",
                  "src": "2871:76:32"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "d51dc3dc",
            "id": 9320,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBytes32ValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9308,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 9306,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2800:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 9307,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2816:13:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2791:39:32"
            },
            "parameters": {
              "id": 9305,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9302,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9320,
                  "src": "2719:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9301,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2719:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9304,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9320,
                  "src": "2736:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9303,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2736:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2718:36:32"
            },
            "returnParameters": {
              "id": 9311,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9310,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9320,
                  "src": "2848:7:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9309,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2848:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2847:9:32"
            },
            "scope": 9436,
            "src": "2677:277:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6857,
              6938
            ],
            "body": {
              "id": 9339,
              "nodeType": "Block",
              "src": "3141:90:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9336,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9324,
                        "src": "3214:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9332,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3158:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9334,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9333,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9322,
                          "src": "3165:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3158:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9335,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetUIntValueForForCECAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8977,
                      "src": "3158:55:32",
                      "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": 9337,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3158:66:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9331,
                  "id": 9338,
                  "nodeType": "Return",
                  "src": "3151:73:32"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "135b9f4d",
            "id": 9340,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9328,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 9326,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3080:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 9327,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3096:13:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3071:39:32"
            },
            "parameters": {
              "id": 9325,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9322,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9340,
                  "src": "2999:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9321,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2999:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9324,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9340,
                  "src": "3016:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9323,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3016:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2998:36:32"
            },
            "returnParameters": {
              "id": 9331,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9330,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9340,
                  "src": "3128:7:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9329,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3128:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3127:9:32"
            },
            "scope": 9436,
            "src": "2960:271:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6866,
              6947
            ],
            "body": {
              "id": 9359,
              "nodeType": "Block",
              "src": "3416:89:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9356,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9344,
                        "src": "3488:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9352,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3433:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9354,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9353,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9342,
                          "src": "3440:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3433:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9355,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetIntValueForForCECAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8995,
                      "src": "3433:54:32",
                      "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": 9357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3433:65:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 9351,
                  "id": 9358,
                  "nodeType": "Return",
                  "src": "3426:72:32"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b461dd4f",
            "id": 9360,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9348,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 9346,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3356:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 9347,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3372:13:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3347:39:32"
            },
            "parameters": {
              "id": 9345,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9342,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9360,
                  "src": "3275:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9341,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3275:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9344,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9360,
                  "src": "3292:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9343,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3292:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3274:36:32"
            },
            "returnParameters": {
              "id": 9351,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9350,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9360,
                  "src": "3404:6:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 9349,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3404:6:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3403:8:32"
            },
            "scope": 9436,
            "src": "3237:268:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6875,
              6956
            ],
            "body": {
              "id": 9379,
              "nodeType": "Block",
              "src": "3696:92:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9376,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9364,
                        "src": "3771:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9372,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3713:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9374,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9373,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9362,
                          "src": "3720:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3713:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9375,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetPeriodValueForForCECAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9013,
                      "src": "3713:57:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_pure$_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) pure returns (struct IP memory)"
                      }
                    },
                    "id": 9377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3713:68:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                      "typeString": "struct IP memory"
                    }
                  },
                  "functionReturnParameters": 9371,
                  "id": 9378,
                  "nodeType": "Return",
                  "src": "3706:75:32"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "6fe55baa",
            "id": 9380,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPeriodValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9368,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 9366,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3633:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 9367,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3649:13:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3624:39:32"
            },
            "parameters": {
              "id": 9365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9362,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9380,
                  "src": "3552:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9361,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3552:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9364,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9380,
                  "src": "3569:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9363,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3569:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3551:36:32"
            },
            "returnParameters": {
              "id": 9371,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9370,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9380,
                  "src": "3681:9:32",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                    "typeString": "struct IP"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9369,
                    "name": "IP",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22493,
                    "src": "3681:2:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_storage_ptr",
                      "typeString": "struct IP"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3680:11:32"
            },
            "scope": 9436,
            "src": "3511:277:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6884,
              6965
            ],
            "body": {
              "id": 9399,
              "nodeType": "Block",
              "src": "3979:91:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9396,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9384,
                        "src": "4053:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9392,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3996:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9394,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9393,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9382,
                          "src": "4003:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3996:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9395,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCycleValueForForCECAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9034,
                      "src": "3996:56:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_pure$_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) pure returns (struct IPS memory)"
                      }
                    },
                    "id": 9397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3996:67:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                      "typeString": "struct IPS memory"
                    }
                  },
                  "functionReturnParameters": 9391,
                  "id": 9398,
                  "nodeType": "Return",
                  "src": "3989:74:32"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b0b4888f",
            "id": 9400,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCycleValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9388,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 9386,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3915:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 9387,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3931:13:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3906:39:32"
            },
            "parameters": {
              "id": 9385,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9382,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9400,
                  "src": "3834:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9381,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3834:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9384,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9400,
                  "src": "3851:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9383,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3851:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3833:36:32"
            },
            "returnParameters": {
              "id": 9391,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9390,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9400,
                  "src": "3963:10:32",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                    "typeString": "struct IPS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9389,
                    "name": "IPS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22486,
                    "src": "3963:3:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_storage_ptr",
                      "typeString": "struct IPS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3962:12:32"
            },
            "scope": 9436,
            "src": "3794:276:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6893,
              6974
            ],
            "body": {
              "id": 9419,
              "nodeType": "Block",
              "src": "4287:100:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9416,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9404,
                        "src": "4370:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9412,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "4304:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9414,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9413,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9402,
                          "src": "4311:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4304:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9415,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetContractReferenceValueForCECAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9156,
                      "src": "4304:65:32",
                      "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": 9417,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4304:76:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                      "typeString": "struct ContractReference memory"
                    }
                  },
                  "functionReturnParameters": 9411,
                  "id": 9418,
                  "nodeType": "Return",
                  "src": "4297:83:32"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "bc6a7d76",
            "id": 9420,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getContractReferenceValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9408,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 9406,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "4209:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 9407,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4225:13:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4200:39:32"
            },
            "parameters": {
              "id": 9405,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9402,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9420,
                  "src": "4128:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9401,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4128:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9404,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9420,
                  "src": "4145:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9403,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4145:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4127:36:32"
            },
            "returnParameters": {
              "id": 9411,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9410,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9420,
                  "src": "4257:24:32",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                    "typeString": "struct ContractReference"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9409,
                    "name": "ContractReference",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22632,
                    "src": "4257:17:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                      "typeString": "struct ContractReference"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4256:26:32"
            },
            "scope": 9436,
            "src": "4076:311:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6981
            ],
            "body": {
              "id": 9434,
              "nodeType": "Block",
              "src": "4536:34:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9431,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4561:1:32",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 9430,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "4553:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": {
                        "id": 9429,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4553:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 9432,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4553:10:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 9428,
                  "id": 9433,
                  "nodeType": "Return",
                  "src": "4546:17:32"
                }
              ]
            },
            "documentation": null,
            "id": 9435,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNextCyclicEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9425,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 9424,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4491:13:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4482:23:32"
            },
            "parameters": {
              "id": 9423,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9422,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9435,
                  "src": "4421:7:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9421,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4421:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4420:23:32"
            },
            "returnParameters": {
              "id": 9428,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9427,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9435,
                  "src": "4523:7:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9426,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4523:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4522:9:32"
            },
            "scope": 9436,
            "src": "4393:177:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 9437,
        "src": "318:4254:32"
      }
    ],
    "src": "41:4532:32"
  },
  "legacyAST": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEC/CECRegistry.sol",
    "exportedSymbols": {
      "CECRegistry": [
        9436
      ]
    },
    "id": 9437,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9159,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:32"
      },
      {
        "id": 9160,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:32"
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol",
        "file": "../Base/SharedTypes.sol",
        "id": 9161,
        "nodeType": "ImportDirective",
        "scope": 9437,
        "sourceUnit": 7865,
        "src": "101:33:32",
        "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": 9162,
        "nodeType": "ImportDirective",
        "scope": 9437,
        "sourceUnit": 4422,
        "src": "135:48:32",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEC/CECEncoder.sol",
        "file": "./CECEncoder.sol",
        "id": 9163,
        "nodeType": "ImportDirective",
        "scope": 9437,
        "sourceUnit": 9158,
        "src": "184:26:32",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEC/ICECRegistry.sol",
        "file": "./ICECRegistry.sol",
        "id": 9164,
        "nodeType": "ImportDirective",
        "scope": 9437,
        "sourceUnit": 9479,
        "src": "211:28:32",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9166,
              "name": "BaseRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4421,
              "src": "342:12:32",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseRegistry_$4421",
                "typeString": "contract BaseRegistry"
              }
            },
            "id": 9167,
            "nodeType": "InheritanceSpecifier",
            "src": "342:12:32"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9168,
              "name": "ICECRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9478,
              "src": "356:12:32",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ICECRegistry_$9478",
                "typeString": "contract ICECRegistry"
              }
            },
            "id": 9169,
            "nodeType": "InheritanceSpecifier",
            "src": "356:12:32"
          }
        ],
        "contractDependencies": [
          4083,
          4125,
          4421,
          4478,
          4500,
          4539,
          4579,
          4826,
          4924,
          5716,
          5776,
          6817,
          6894,
          6982,
          9478,
          24758,
          24885,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 9165,
          "nodeType": "StructuredDocumentation",
          "src": "242:75:32",
          "text": " @title CECRegistry\n @notice Registry for ACTUS Protocol assets"
        },
        "fullyImplemented": true,
        "id": 9436,
        "linearizedBaseContracts": [
          9436,
          9478,
          4500,
          4421,
          4539,
          4826,
          4579,
          5716,
          24885,
          24758,
          4924,
          6817,
          5776,
          6894,
          6982,
          4083,
          4125,
          4478,
          38485,
          38376
        ],
        "name": "CECRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 9172,
            "libraryName": {
              "contractScope": null,
              "id": 9170,
              "name": "CECEncoder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9157,
              "src": "382:10:32",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CECEncoder_$9157",
                "typeString": "library CECEncoder"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "376:27:32",
            "typeName": {
              "contractScope": null,
              "id": 9171,
              "name": "Asset",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4466,
              "src": "397:5:32",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                "typeString": "struct Asset"
              }
            }
          },
          {
            "body": {
              "id": 9177,
              "nodeType": "Block",
              "src": "470:2:32",
              "statements": []
            },
            "documentation": null,
            "id": 9178,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [],
                "id": 9175,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9174,
                  "name": "BaseRegistry",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4421,
                  "src": "451:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseRegistry_$4421_$",
                    "typeString": "type(contract BaseRegistry)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "451:14:32"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 9173,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "425:2:32"
            },
            "returnParameters": {
              "id": 9176,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "470:0:32"
            },
            "scope": 9436,
            "src": "414:58:32",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              9463
            ],
            "body": {
              "id": 9219,
              "nodeType": "Block",
              "src": "1249:137:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9203,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9181,
                        "src": "1268:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9204,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9185,
                        "src": "1277:5:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9205,
                        "name": "schedule",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9188,
                        "src": "1284:8:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9206,
                        "name": "ownership",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9190,
                        "src": "1294:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9207,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9192,
                        "src": "1305:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9208,
                        "name": "actor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9194,
                        "src": "1313:5:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9209,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9196,
                        "src": "1320:5:32",
                        "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": 9202,
                      "name": "setAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4324,
                      "src": "1259:8:32",
                      "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": 9210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1259:67:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9211,
                  "nodeType": "ExpressionStatement",
                  "src": "1259:67:32"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9216,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9183,
                        "src": "1373:5:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                          "typeString": "struct CECTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                          "typeString": "struct CECTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9212,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1336:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9214,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9213,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9181,
                          "src": "1343:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1336:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9215,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetCECTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8513,
                      "src": "1336:36:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_CECTerms_$22799_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct CECTerms memory)"
                      }
                    },
                    "id": 9217,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1336:43:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9218,
                  "nodeType": "ExpressionStatement",
                  "src": "1336:43:32"
                }
              ]
            },
            "documentation": {
              "id": 9179,
              "nodeType": "StructuredDocumentation",
              "src": "478:434:32",
              "text": " @notice\n @param assetId id of the asset\n @param terms asset specific terms (CECTerms)\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": "f82277d2",
            "id": 9220,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9200,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9199,
                  "name": "onlyApprovedActors",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4187,
                  "src": "1226:18:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1226:18:32"
              }
            ],
            "name": "registerAsset",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9198,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1209:8:32"
            },
            "parameters": {
              "id": 9197,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9181,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9220,
                  "src": "949:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9180,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "949:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9183,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9220,
                  "src": "974:23:32",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                    "typeString": "struct CECTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9182,
                    "name": "CECTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22799,
                    "src": "974:8:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CECTerms_$22799_storage_ptr",
                      "typeString": "struct CECTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9185,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9220,
                  "src": "1007:20:32",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9184,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1007:5:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9188,
                  "mutability": "mutable",
                  "name": "schedule",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9220,
                  "src": "1037:27:32",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9186,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1037:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 9187,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1037:9:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9190,
                  "mutability": "mutable",
                  "name": "ownership",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9220,
                  "src": "1074:33:32",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                    "typeString": "struct AssetOwnership"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9189,
                    "name": "AssetOwnership",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7849,
                    "src": "1074:14:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                      "typeString": "struct AssetOwnership"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9192,
                  "mutability": "mutable",
                  "name": "engine",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9220,
                  "src": "1117:14:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9191,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1117:7:32",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9194,
                  "mutability": "mutable",
                  "name": "actor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9220,
                  "src": "1141:13:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9193,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1141:7:32",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9196,
                  "mutability": "mutable",
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9220,
                  "src": "1164:13:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9195,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1164:7:32",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "939:244:32"
            },
            "returnParameters": {
              "id": 9201,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1249:0:32"
            },
            "scope": 9436,
            "src": "917:469:32",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              9470
            ],
            "body": {
              "id": 9235,
              "nodeType": "Block",
              "src": "1646:62:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9229,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1663:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9231,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9230,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9223,
                          "src": "1670:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1663:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9232,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCECTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8748,
                      "src": "1663:36:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_CECTerms_$22799_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct CECTerms memory)"
                      }
                    },
                    "id": 9233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1663:38:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                      "typeString": "struct CECTerms memory"
                    }
                  },
                  "functionReturnParameters": 9228,
                  "id": 9234,
                  "nodeType": "Return",
                  "src": "1656:45:32"
                }
              ]
            },
            "documentation": {
              "id": 9221,
              "nodeType": "StructuredDocumentation",
              "src": "1392:129:32",
              "text": " @notice Returns the terms of an asset.\n @param assetId id of the asset\n @return terms of the asset"
            },
            "functionSelector": "6be39bda",
            "id": 9236,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9225,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1599:8:32"
            },
            "parameters": {
              "id": 9224,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9223,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9236,
                  "src": "1544:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9222,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1544:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1543:17:32"
            },
            "returnParameters": {
              "id": 9228,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9227,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9236,
                  "src": "1625:15:32",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                    "typeString": "struct CECTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9226,
                    "name": "CECTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22799,
                    "src": "1625:8:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CECTerms_$22799_storage_ptr",
                      "typeString": "struct CECTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1624:17:32"
            },
            "scope": 9436,
            "src": "1526:182:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              9477
            ],
            "body": {
              "id": 9259,
              "nodeType": "Block",
              "src": "2020:96:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9252,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9241,
                        "src": "2067:5:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                          "typeString": "struct CECTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                          "typeString": "struct CECTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9248,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2030:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9250,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9249,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9239,
                          "src": "2037:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2030:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9251,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetCECTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8513,
                      "src": "2030:36:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_CECTerms_$22799_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct CECTerms memory)"
                      }
                    },
                    "id": 9253,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2030:43:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9254,
                  "nodeType": "ExpressionStatement",
                  "src": "2030:43:32"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9256,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9239,
                        "src": "2101:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9255,
                      "name": "UpdatedTerms",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6902,
                      "src": "2088:12:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 9257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2088:21:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9258,
                  "nodeType": "EmitStatement",
                  "src": "2083:26:32"
                }
              ]
            },
            "documentation": {
              "id": 9237,
              "nodeType": "StructuredDocumentation",
              "src": "1714:172:32",
              "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": "c364ac9c",
            "id": 9260,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9245,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9239,
                    "src": "2007:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9246,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9244,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "1993:12:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1993:22:32"
              }
            ],
            "name": "setTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9243,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1976:8:32"
            },
            "parameters": {
              "id": 9242,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9239,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9260,
                  "src": "1909:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9238,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1909:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9241,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9260,
                  "src": "1926:23:32",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                    "typeString": "struct CECTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9240,
                    "name": "CECTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22799,
                    "src": "1926:8:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CECTerms_$22799_storage_ptr",
                      "typeString": "struct CECTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1908:42:32"
            },
            "returnParameters": {
              "id": 9247,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2020:0:32"
            },
            "scope": 9436,
            "src": "1891:225:32",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6830,
              6911
            ],
            "body": {
              "id": 9279,
              "nodeType": "Block",
              "src": "2301:87:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9276,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9264,
                        "src": "2371:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9272,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2318:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9274,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9273,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9262,
                          "src": "2325:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2318:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9275,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetEnumValueForCECAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8929,
                      "src": "2318:52:32",
                      "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": 9277,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2318:63:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 9271,
                  "id": 9278,
                  "nodeType": "Return",
                  "src": "2311:70:32"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "ecef5577",
            "id": 9280,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEnumValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9268,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 9266,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2242:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 9267,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2258:13:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2233:39:32"
            },
            "parameters": {
              "id": 9265,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9262,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9280,
                  "src": "2161:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9261,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2161:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9264,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9280,
                  "src": "2178:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9263,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2178:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2160:36:32"
            },
            "returnParameters": {
              "id": 9271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9270,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9280,
                  "src": "2290:5:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 9269,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2290:5:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2289:7:32"
            },
            "scope": 9436,
            "src": "2122:266:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6839,
              6920
            ],
            "body": {
              "id": 9299,
              "nodeType": "Block",
              "src": "2578:93:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9296,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9284,
                        "src": "2654:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9292,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2595:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9294,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9293,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9282,
                          "src": "2602:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2595:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9295,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetAddressValueForForCECAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8944,
                      "src": "2595:58:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_pure$_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) pure returns (address)"
                      }
                    },
                    "id": 9297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2595:69:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 9291,
                  "id": 9298,
                  "nodeType": "Return",
                  "src": "2588:76:32"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "eb012559",
            "id": 9300,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAddressValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9288,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 9286,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2517:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 9287,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2533:13:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2508:39:32"
            },
            "parameters": {
              "id": 9285,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9282,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9300,
                  "src": "2436:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9281,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2436:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9284,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9300,
                  "src": "2453:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9283,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2453:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2435:36:32"
            },
            "returnParameters": {
              "id": 9291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9290,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9300,
                  "src": "2565:7:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9289,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2565:7:32",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2564:9:32"
            },
            "scope": 9436,
            "src": "2394:277:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6848,
              6929
            ],
            "body": {
              "id": 9319,
              "nodeType": "Block",
              "src": "2861:93:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9316,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9304,
                        "src": "2937:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9312,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2878:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9314,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9313,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9302,
                          "src": "2885:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2878:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9315,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetBytes32ValueForForCECAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8959,
                      "src": "2878:58:32",
                      "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": 9317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2878:69:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 9311,
                  "id": 9318,
                  "nodeType": "Return",
                  "src": "2871:76:32"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "d51dc3dc",
            "id": 9320,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBytes32ValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9308,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 9306,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2800:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 9307,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2816:13:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2791:39:32"
            },
            "parameters": {
              "id": 9305,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9302,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9320,
                  "src": "2719:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9301,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2719:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9304,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9320,
                  "src": "2736:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9303,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2736:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2718:36:32"
            },
            "returnParameters": {
              "id": 9311,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9310,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9320,
                  "src": "2848:7:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9309,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2848:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2847:9:32"
            },
            "scope": 9436,
            "src": "2677:277:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6857,
              6938
            ],
            "body": {
              "id": 9339,
              "nodeType": "Block",
              "src": "3141:90:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9336,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9324,
                        "src": "3214:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9332,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3158:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9334,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9333,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9322,
                          "src": "3165:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3158:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9335,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetUIntValueForForCECAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8977,
                      "src": "3158:55:32",
                      "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": 9337,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3158:66:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9331,
                  "id": 9338,
                  "nodeType": "Return",
                  "src": "3151:73:32"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "135b9f4d",
            "id": 9340,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9328,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 9326,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3080:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 9327,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3096:13:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3071:39:32"
            },
            "parameters": {
              "id": 9325,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9322,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9340,
                  "src": "2999:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9321,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2999:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9324,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9340,
                  "src": "3016:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9323,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3016:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2998:36:32"
            },
            "returnParameters": {
              "id": 9331,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9330,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9340,
                  "src": "3128:7:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9329,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3128:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3127:9:32"
            },
            "scope": 9436,
            "src": "2960:271:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6866,
              6947
            ],
            "body": {
              "id": 9359,
              "nodeType": "Block",
              "src": "3416:89:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9356,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9344,
                        "src": "3488:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9352,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3433:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9354,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9353,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9342,
                          "src": "3440:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3433:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9355,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetIntValueForForCECAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8995,
                      "src": "3433:54:32",
                      "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": 9357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3433:65:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 9351,
                  "id": 9358,
                  "nodeType": "Return",
                  "src": "3426:72:32"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b461dd4f",
            "id": 9360,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9348,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 9346,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3356:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 9347,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3372:13:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3347:39:32"
            },
            "parameters": {
              "id": 9345,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9342,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9360,
                  "src": "3275:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9341,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3275:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9344,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9360,
                  "src": "3292:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9343,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3292:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3274:36:32"
            },
            "returnParameters": {
              "id": 9351,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9350,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9360,
                  "src": "3404:6:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 9349,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3404:6:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3403:8:32"
            },
            "scope": 9436,
            "src": "3237:268:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6875,
              6956
            ],
            "body": {
              "id": 9379,
              "nodeType": "Block",
              "src": "3696:92:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9376,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9364,
                        "src": "3771:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9372,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3713:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9374,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9373,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9362,
                          "src": "3720:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3713:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9375,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetPeriodValueForForCECAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9013,
                      "src": "3713:57:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_pure$_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) pure returns (struct IP memory)"
                      }
                    },
                    "id": 9377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3713:68:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                      "typeString": "struct IP memory"
                    }
                  },
                  "functionReturnParameters": 9371,
                  "id": 9378,
                  "nodeType": "Return",
                  "src": "3706:75:32"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "6fe55baa",
            "id": 9380,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPeriodValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9368,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 9366,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3633:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 9367,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3649:13:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3624:39:32"
            },
            "parameters": {
              "id": 9365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9362,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9380,
                  "src": "3552:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9361,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3552:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9364,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9380,
                  "src": "3569:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9363,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3569:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3551:36:32"
            },
            "returnParameters": {
              "id": 9371,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9370,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9380,
                  "src": "3681:9:32",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                    "typeString": "struct IP"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9369,
                    "name": "IP",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22493,
                    "src": "3681:2:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_storage_ptr",
                      "typeString": "struct IP"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3680:11:32"
            },
            "scope": 9436,
            "src": "3511:277:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6884,
              6965
            ],
            "body": {
              "id": 9399,
              "nodeType": "Block",
              "src": "3979:91:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9396,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9384,
                        "src": "4053:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9392,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3996:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9394,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9393,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9382,
                          "src": "4003:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3996:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9395,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCycleValueForForCECAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9034,
                      "src": "3996:56:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_pure$_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) pure returns (struct IPS memory)"
                      }
                    },
                    "id": 9397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3996:67:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                      "typeString": "struct IPS memory"
                    }
                  },
                  "functionReturnParameters": 9391,
                  "id": 9398,
                  "nodeType": "Return",
                  "src": "3989:74:32"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b0b4888f",
            "id": 9400,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCycleValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9388,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 9386,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3915:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 9387,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3931:13:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3906:39:32"
            },
            "parameters": {
              "id": 9385,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9382,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9400,
                  "src": "3834:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9381,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3834:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9384,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9400,
                  "src": "3851:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9383,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3851:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3833:36:32"
            },
            "returnParameters": {
              "id": 9391,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9390,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9400,
                  "src": "3963:10:32",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                    "typeString": "struct IPS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9389,
                    "name": "IPS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22486,
                    "src": "3963:3:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_storage_ptr",
                      "typeString": "struct IPS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3962:12:32"
            },
            "scope": 9436,
            "src": "3794:276:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6893,
              6974
            ],
            "body": {
              "id": 9419,
              "nodeType": "Block",
              "src": "4287:100:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9416,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9404,
                        "src": "4370:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9412,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "4304:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 9414,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9413,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9402,
                          "src": "4311:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4304:15:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 9415,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetContractReferenceValueForCECAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9156,
                      "src": "4304:65:32",
                      "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": 9417,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4304:76:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                      "typeString": "struct ContractReference memory"
                    }
                  },
                  "functionReturnParameters": 9411,
                  "id": 9418,
                  "nodeType": "Return",
                  "src": "4297:83:32"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "bc6a7d76",
            "id": 9420,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getContractReferenceValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9408,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 9406,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "4209:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 9407,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4225:13:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4200:39:32"
            },
            "parameters": {
              "id": 9405,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9402,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9420,
                  "src": "4128:15:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9401,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4128:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9404,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9420,
                  "src": "4145:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9403,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4145:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4127:36:32"
            },
            "returnParameters": {
              "id": 9411,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9410,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9420,
                  "src": "4257:24:32",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                    "typeString": "struct ContractReference"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9409,
                    "name": "ContractReference",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22632,
                    "src": "4257:17:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                      "typeString": "struct ContractReference"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4256:26:32"
            },
            "scope": 9436,
            "src": "4076:311:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6981
            ],
            "body": {
              "id": 9434,
              "nodeType": "Block",
              "src": "4536:34:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9431,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4561:1:32",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 9430,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "4553:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": {
                        "id": 9429,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4553:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 9432,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4553:10:32",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 9428,
                  "id": 9433,
                  "nodeType": "Return",
                  "src": "4546:17:32"
                }
              ]
            },
            "documentation": null,
            "id": 9435,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNextCyclicEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9425,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 9424,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4491:13:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4482:23:32"
            },
            "parameters": {
              "id": 9423,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9422,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9435,
                  "src": "4421:7:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9421,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4421:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4420:23:32"
            },
            "returnParameters": {
              "id": 9428,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9427,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9435,
                  "src": "4523:7:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9426,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4523:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4522:9:32"
            },
            "scope": 9436,
            "src": "4393:177:32",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 9437,
        "src": "318:4254:32"
      }
    ],
    "src": "41:4532:32"
  },
  "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": {
        "CECEncoder": "0xE2A368e30ea6e44751CB0F40bA2933d8aA0f2df8"
      },
      "address": "0xE8614BC9a440085A305d4d6eC8D6d73f325556A8",
      "transactionHash": "0x8f182fb28c9ae8d94f8baec210e1753dfb3ecdfb08406470f744cd855ee6a846"
    },
    "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": {
        "CECEncoder": "0x1b627A7dFd81bB6d6dc293FF5146503FEc36DA60"
      },
      "address": "0x2829fa974cA3Cfa09fe61164c13384fcc0147AAd",
      "transactionHash": "0xfcf3954a24c20d927ebb4ddbb4c793211e36db5292d9eda53301c4568732c11e"
    },
    "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": {
        "CECEncoder": "0xeBEABDe323B77c0f6EBc01e5C61d586D201636F3"
      },
      "address": "0xA240Ee48f8dD44CdEeAC513C6fd6739F0C6bE46c",
      "transactionHash": "0x4b39557e4d6ced42c80e5d821e17a2badbf362a719becb1d08392edd90440ae6"
    }
  },
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:17.809Z",
  "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,uint256,uint256,int256,int256,int256,(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 (CECTerms)"
        }
      },
      "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,uint256,uint256,int256,int256,int256,(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": "CECRegistry",
    "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,uint256,uint256,int256,int256,int256,(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,uint256,uint256,int256,int256,int256,(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)))": {
        "notice": "Set the terms of the asset"
      }
    },
    "notice": "Registry for ACTUS Protocol assets",
    "version": 1
  }
}