{
  "contractName": "CECActor",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IAssetRegistry",
          "name": "assetRegistry",
          "type": "address"
        },
        {
          "internalType": "contract IDataRegistry",
          "name": "dataRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "enum ContractType",
          "name": "contractType",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "creator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "counterparty",
          "type": "address"
        }
      ],
      "name": "InitializedAsset",
      "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": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "scheduleTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "payoff",
          "type": "int256"
        }
      ],
      "name": "ProgressedAsset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "statusMessage",
          "type": "bytes32"
        }
      ],
      "name": "Status",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "assetRegistry",
      "outputs": [
        {
          "internalType": "contract IAssetRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "dataRegistry",
      "outputs": [
        {
          "internalType": "contract IDataRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "object",
          "type": "bytes32"
        }
      ],
      "name": "decodeCollateralObject",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "decodeEvent",
      "outputs": [
        {
          "internalType": "enum EventType",
          "name": "",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "collateralToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "collateralAmount",
          "type": "uint256"
        }
      ],
      "name": "encodeCollateralAsObject",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "scheduleTime",
          "type": "uint256"
        }
      ],
      "name": "encodeEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        }
      ],
      "name": "getEpochOffset",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "progress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "progressWith",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "convention",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "shiftCalcTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "convention",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "shiftEventTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum 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"
        },
        {
          "internalType": "bytes32[]",
          "name": "schedule",
          "type": "bytes32[]"
        },
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "custodian",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "underlyingRegistry",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IAssetRegistry\",\"name\":\"assetRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IDataRegistry\",\"name\":\"dataRegistry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"counterparty\",\"type\":\"address\"}],\"name\":\"InitializedAsset\",\"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\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"scheduleTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"payoff\",\"type\":\"int256\"}],\"name\":\"ProgressedAsset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"statusMessage\",\"type\":\"bytes32\"}],\"name\":\"Status\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"assetRegistry\",\"outputs\":[{\"internalType\":\"contract IAssetRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dataRegistry\",\"outputs\":[{\"internalType\":\"contract IDataRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"}],\"name\":\"decodeCollateralObject\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"decodeEvent\",\"outputs\":[{\"internalType\":\"enum EventType\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateralAmount\",\"type\":\"uint256\"}],\"name\":\"encodeCollateralAsObject\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"scheduleTime\",\"type\":\"uint256\"}],\"name\":\"encodeEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"}],\"name\":\"getEpochOffset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"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\"},{\"internalType\":\"bytes32[]\",\"name\":\"schedule\",\"type\":\"bytes32[]\"},{\"internalType\":\"address\",\"name\":\"engine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingRegistry\",\"type\":\"address\"}],\"name\":\"initialize\",\"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\":\"progress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"progressWith\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"convention\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"}],\"name\":\"shiftCalcTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"convention\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"}],\"name\":\"shiftEventTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"initialize((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint256,uint256,int256,int256,int256,(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),bytes32[],address,address,address,address)\":{\"params\":{\"admin\":\"address of the admin of the asset (optional)\",\"custodian\":\"address of the custodian of the collateral\",\"engine\":\"address of the ACTUS engine used for the spec. ContractType\",\"schedule\":\"schedule of the asset\",\"terms\":\"asset specific terms\",\"underlyingRegistry\":\"address of the asset registry where the underlying asset is stored\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"progress(bytes32)\":{\"details\":\"Emits ProgressedAsset if the state of the asset was updated.\",\"params\":{\"assetId\":\"id of the asset\"}},\"progressWith(bytes32,bytes32)\":{\"details\":\"Emits ProgressedAsset if the state of the asset was updated.\",\"params\":{\"_event\":\"the unscheduled event\",\"assetId\":\"id of the asset\"}},\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"CECActor\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"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\"},\"initialize((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint256,uint256,int256,int256,int256,(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),bytes32[],address,address,address,address)\":{\"notice\":\"Derives initial state of the asset terms and stores together with terms, schedule, ownership, engine, admin of the asset in the contract types specific AssetRegistry.\"},\"progress(bytes32)\":{\"notice\":\"Proceeds with the next state of the asset based on the terms, the last state, market object data and the settlement status of current obligation, derived from either a prev. pending event, an event generated based on the current state of an underlying asset or the assets schedule.\"},\"progressWith(bytes32,bytes32)\":{\"notice\":\"Proceeds with the next state of the asset based on the terms, the last state, market object data and the settlement status of current obligation, derived from a provided (unscheduled) event Reverts if the provided event violates the order of events.\"},\"shiftCalcTime(uint256,uint8,uint8,uint256)\":{\"notice\":\"Used in POFs and STFs for DCFs. No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided.\"}},\"notice\":\"TODO\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEC/CECActor.sol\":\"CECActor\"},\"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/AssetActor/BaseActor.sol\":{\"keccak256\":\"0x92a8ff9c2c11b86fec0bc0ca7969bdf7860bbc5c4724522f9c55f06dc82d1c56\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://636bf06c13797d2217fa00ac597d8f22772645300e62b88cbefa341055bc33a0\",\"dweb:/ipfs/QmfNTGqmdXWQb1uZBggzURfDR5fzMSGGJqEk8PEq5JCSQ7\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetActor/IAssetActor.sol\":{\"keccak256\":\"0xe7607bac7335711a3aec25570695955cec318f24285291e1fda899389680ff92\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b26cc5b3081d8187958b3fc9b06aa6dfa46b5bea39f2c74f918a1e80263e4fc1\",\"dweb:/ipfs/QmSVLpWnLAjCMoThwi88ACGC8FnUMhiaw1zmnuDBGycTJH\"]},\"/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/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/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/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/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/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/Custodian/ICustodian.sol\":{\"keccak256\":\"0x82f2d39ff9cfeffbd348daa3737e3afb19726c56943fd513eeedd9589a1948c2\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1881c11d6501d1d10cf29977f03ab1c6f9f57bf48819c293c5f4b2640b2d0a22\",\"dweb:/ipfs/QmXRwstHsC5tjjbvHCi5WuPTe6piwvKMpLzHHVnPvKobSs\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/DataRegistryStorage.sol\":{\"keccak256\":\"0xb33c89925a9e7c267d96d1461fce5839c6cef7f0365bf62a507a839b9cd925e7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7ea1957775722da928f53d4263162ebb94ffb5148d6e75dd815a2906a62e1e46\",\"dweb:/ipfs/QmXTRFKAC24PR9pqfHW2W73jsHaFqXdjjahqPJjKpZSLRk\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/IDataRegistry.sol\":{\"keccak256\":\"0x303e7925666252d8394929acfd8d32013b2225b202bb2fb873a4b9a257d324db\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://982d93073ffd66715b02953f989744ac3acc9556c9b41cf522914ec0e552b7b0\",\"dweb:/ipfs/QmdNoYVj3yQfkWGXNcueKmQgDs6kVyPvNzGduJvQscxAoR\"]},\"/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/CECActor.sol\":{\"keccak256\":\"0xea2c1dda389d106f815c03ade6f928dce3613e4ac4948db6fbb807ff9d8361fc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6f1e52891d8a7c4f041d63f7a9248feec85723282541855e0027621d3a847f96\",\"dweb:/ipfs/QmUUBYHEwd7gpwvkqX3zm9TEYsyWYMNmU7kCPYEpm7dJEq\"]},\"/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/Conventions/BusinessDayConventions.sol\":{\"keccak256\":\"0xb67309595d06a957324467896ed9ece5db6c064a40733528d2405593d083f358\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a77e96b548901c4ee87943de5a7093d178bffe1daa72b6e303ddc1fac93f5173\",\"dweb:/ipfs/QmctKP5Hp7B4YtzzC5q3cRJJiiPS4a5US6vpHDb94paaFT\"]},\"@atpar/actus-solidity/contracts/Core/SignedMath.sol\":{\"keccak256\":\"0x179745be164f4540d848a50eeb8aea4ec3a0ddabc50f4c122c41ec0463e849c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e1088b178902de60c611c2dffd2c8943cc7b68988c9083936b760864775db7da\",\"dweb:/ipfs/QmV9XYTU6a8nPzoJv9FjRV4Z2rfbymGGARmzka57ydD1FG\"]},\"@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol\":{\"keccak256\":\"0x9995f89d4c5981ed389e941f578414eb901a4fde0b2eb5d815a43d86a9f53d98\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bc3b3a4f33554f80e19328158ff913d700ff8133d08f434b33a846852cb927dd\",\"dweb:/ipfs/QmawYPv9PguBqrFN5YquvUvbYC2MdtTC4Zkyj3uGxiieHW\"]},\"@atpar/actus-solidity/contracts/Engines/CEC/ICECEngine.sol\":{\"keccak256\":\"0x0bfba7d3dade34a306b829221bff999da6e76e785257e9cadb3a226b91f2f9c2\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c22e7eaea7aed3f798b29ec8a39d253c02d403fcc34b74dbfa7eb279c2f649c1\",\"dweb:/ipfs/QmNwDr3xx3rpm1vNipSDCFZeknpu1RUtTE5VunrQiaJKPv\"]},\"@atpar/actus-solidity/contracts/Engines/IEngine.sol\":{\"keccak256\":\"0xdee7e7d2f233c108231be14130dc2dbcf8eb0374636034f75c330a4cd3e1c7cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0fe8e1c0c4d447b4b180f53574016ff852af90faa1230be5b4c81464b9b5ffc8\",\"dweb:/ipfs/QmctLgYPvacjTzNS7iJBDkXjEzdbD4GDkVnZE9FJa26oX4\"]},\"@atpar/actus-solidity/contracts/external/BokkyPooBah/BokkyPooBahsDateTimeLibrary.sol\":{\"keccak256\":\"0x679533db9ba3257086015c0435c7d0de7a0a2f352a9de725db294e3f42c17391\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c586a5d8d9a654840c3655ccd4e47458d1e781c7542ec6fd2c29638b0dee57d\",\"dweb:/ipfs/QmeoQpnTMU4pa4iwKJcKmbNm7P54UCxux2G9rJyTCyq8GZ\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0xc6fb4c940628ca2cde81ed6d20fc9ff456b60f55aafef555f43a86a2dda7ad9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f17dda58954a84ffca3d53c0b6435bad7f5c42ab3a9c4603db2f1aef00edae4e\",\"dweb:/ipfs/QmehW99QmmzKvnqTsprsApDF7mK2JVo6nnrZ47znhLTFjh\"]},\"openzeppelin-solidity/contracts/access/Ownable.sol\":{\"keccak256\":\"0x4bd6402ca6b3419008c2b482aff54e66836e8cb4eba2680e42ac5884ae6424fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f9f711fb8d0d92aeea1c327e3845d13ca1fa8f142e47f8723cd5b3106fb29a3\",\"dweb:/ipfs/QmVQUReDW9f4zGqhizwHnyU8EntMs95tbASdqkGncnikba\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5c26b39d26f7ed489e555d955dcd3e01872972e71fdd1528e93ec164e4f23385\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efdc632af6960cf865dbc113665ea1f5b90eab75cc40ec062b2f6ae6da582017\",\"dweb:/ipfs/QmfAZFDuG62vxmAN9DnXApv7e7PMzPqi4RkqqZHLMSQiY5\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162004005380380620040058339810160408190526200003491620000ce565b818160006200004b6001600160e01b03620000ca16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905550620001259050565b3390565b60008060408385031215620000e1578182fd5b8251620000ee816200010c565b602084015190925062000101816200010c565b809150509250929050565b6001600160a01b03811681146200012257600080fd5b50565b613ed080620001356000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063e05a66e011610066578063e05a66e0146101e0578063e726d680146101f3578063f2fde38b14610206578063f5586e0514610219576100f5565b80638da5cb5b146101a8578063979d7e86146101bd578063a39c1d6b146101c5578063d56a1ddf146101cd576100f5565b8063715018a6116100d3578063715018a61461015957806372540003146101615780637aebd2a814610182578063811322fb14610195576100f5565b8063645a26bd146100fa5780636778e0e9146101245780636b6ba66414610144575b600080fd5b61010d610108366004612b4c565b61022c565b60405161011b92919061335c565b60405180910390f35b610137610132366004612b05565b610245565b60405161011b9190613375565b610157610152366004612b7c565b610270565b005b610157610525565b61017461016f366004612b4c565b6105a4565b60405161011b929190613623565b610157610190366004612b4c565b6105cd565b6101376101a3366004612bf1565b61082b565b6101b0610839565b60405161011b919061330a565b6101b0610848565b6101b0610857565b6101576101db366004612cc1565b610866565b6101376101ee366004612c0d565b610e42565b610137610201366004612fb7565b610e60565b610157610214366004612acd565b610fb5565b610137610227366004612fb7565b61106b565b606081901c6bffffffffffffffffffffffff8216915091565b6bffffffffffffffffffffffff19606083901b166bffffffffffffffffffffffff8216175b92915050565b60015460405163747be51f60e11b81526001600160a01b039091169063e8f7ca3e906102a2908590339060040161337e565b602060405180830381600087803b1580156102bc57600080fd5b505af11580156102d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f49190612b30565b6103195760405162461bcd60e51b8152600401610310906138f5565b60405180910390fd5b60015460405163f52f84e160e01b81526000916001600160a01b03169063f52f84e19061034a908690600401613375565b60206040518083038186803b15801561036257600080fd5b505afa158015610376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190612b64565b146103b75760405162461bcd60e51b815260040161031090613b04565b600154604051631d7a1ab960e21b81526000916001600160a01b0316906375e86ae4906103e8908690600401613375565b60206040518083038186803b15801561040057600080fd5b505afa158015610414573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104389190612b64565b146104555760405162461bcd60e51b8152600401610310906138a7565b60015460405163b828204160e01b81526000916104dc916001600160a01b039091169063b82820419061048c908790600401613375565b60206040518083038186803b1580156104a457600080fd5b505afa1580156104b8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016f9190612b64565b91505060006104ea836105a4565b9150508115806104f957508181105b6105155760405162461bcd60e51b8152600401610310906136ba565b61051f84846110df565b50505050565b61052d611688565b6000546001600160a01b0390811691161461055a5760405162461bcd60e51b815260040161031090613a36565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c8111156105b857fe5b92505067ffffffffffffffff83169050915091565b600154604051631392c59160e11b81526001600160a01b03909116906327258b22906105fd908490600401613375565b60206040518083038186803b15801561061557600080fd5b505afa158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d9190612b30565b6106695760405162461bcd60e51b815260040161031090613940565b600154604051630316dd6960e21b81526000916001600160a01b031690630c5b75a49061069a908590600401613375565b602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ec9190612b64565b90508061077657600154604051631d7a1ab960e21b81526001600160a01b03909116906375e86ae490610723908590600401613375565b60206040518083038186803b15801561073b57600080fd5b505afa15801561074f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107739190612b64565b90505b80610800576001546040516361db73e160e11b81526001600160a01b039091169063c3b6e7c2906107ab908590600401613375565b602060405180830381600087803b1580156107c557600080fd5b505af11580156107d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd9190612b64565b90505b8061081d5760405162461bcd60e51b815260040161031090613769565b61082782826110df565b5050565b600081601c81111561026a57fe5b6000546001600160a01b031690565b6001546001600160a01b031681565b6002546001600160a01b031681565b6001600160a01b038416158015906108f957506011846001600160a01b031663cb2ef6f76040518163ffffffff1660e01b815260040160206040518083038186803b1580156108b457600080fd5b505afa1580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190612bd5565b60128111156108f757fe5b145b6109155760405162461bcd60e51b81526004016103109061365d565b6000874260405160200161092a929190613c7b565b60405160208183030381529060405280519060200120905061094a6128bf565b600361095e6102208b016102008c01612b9d565b600481111561096957fe5b1415610991576101a08901356109915760405162461bcd60e51b8152600401610310906137f5565b60046109a56102a08b016102808c01612b9d565b60048111156109b057fe5b1415610ce7576102208901356109d85760405162461bcd60e51b815260040161031090613b4f565b8884426040516020016109ed93929190613c50565b60408051601f1981840301815290829052805160209091012060015463ecef557760e01b83529093506101a08b0135916000916001600160a01b03169063ecef557790610a3e9085906004016133de565b60206040518083038186803b158015610a5657600080fd5b505afa158015610a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8e9190612ffe565b60ff16600c811115610a9c57fe5b9050610aa66128bf565b60405163e50e0ef760e01b81526001600160a01b0387169063e50e0ef790610ad2908690600401613375565b60806040518083038186803b158015610aea57600080fd5b505afa158015610afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b229190612c59565b90506006610b3660608e0160408f01612bb9565b600c811115610b4157fe5b148015610b595750600082600c811115610b5757fe5b145b15610bb657604051806080016040528082600001516001600160a01b0316815260200182602001516001600160a01b03168152602001886001600160a01b0316815260200182606001516001600160a01b03168152509350610c60565b6007610bc860608e0160408f01612bb9565b600c811115610bd357fe5b148015610beb5750600182600c811115610be957fe5b145b15610c48576040518060800160405280886001600160a01b0316815260200182602001516001600160a01b0316815260200182604001516001600160a01b0316815260200182606001516001600160a01b03168152509350610c60565b60405162461bcd60e51b8152600401610310906137aa565b866001600160a01b031663f1acef64868e876040518463ffffffff1660e01b8152600401610c909392919061352b565b602060405180830381600087803b158015610caa57600080fd5b505af1158015610cbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce29190612b30565b505050505b610cef6128e6565b604051632630a7a960e21b81526001600160a01b038816906398c29ea490610d1b908d90600401613c41565b6102806040518083038186803b158015610d3457600080fd5b505afa158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c9190612eba565b9050600160009054906101000a90046001600160a01b03166001600160a01b031663f82277d2848c848d8d888e308f6040518a63ffffffff1660e01b8152600401610dbf9998979695949392919061354e565b600060405180830381600087803b158015610dd957600080fd5b505af1158015610ded573d6000803e3d6000fd5b50505050827fc5df678b84aa92f5f59981df8c9997b366d886de25771c5f753015c2e14e907a601184600001518560400151604051610e2e939291906135f7565b60405180910390a250505050505050505050565b60008160f884601c811115610e5357fe5b60ff16901b179392505050565b600081851415610e71575083610fad565b6001846008811115610e7f57fe5b1480610e9657506003846008811115610e9457fe5b145b15610eac57610ea5858461168c565b9050610fad565b6002846008811115610eba57fe5b1480610ed157506004846008811115610ecf57fe5b145b15610f15576000610ee2868561168c565b9050610eed866116e8565b610ef6826116e8565b1415610f03579050610fad565b610f0d8685611700565b915050610fad565b6005846008811115610f2357fe5b1480610f3a57506007846008811115610f3857fe5b145b15610f4957610ea58584611700565b6006846008811115610f5757fe5b1480610f6e57506008846008811115610f6c57fe5b145b15610faa576000610f7f8685611700565b9050610f8a866116e8565b610f93826116e8565b1415610fa0579050610fad565b610f0d868561168c565b50835b949350505050565b610fbd611688565b6000546001600160a01b03908116911614610fea5760405162461bcd60e51b815260040161031090613a36565b6001600160a01b0381166110105760405162461bcd60e51b815260040161031090613705565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000600384600881111561107b57fe5b14806110925750600484600881111561109057fe5b145b806110a8575060078460088111156110a657fe5b145b806110be575060088460088111156110bc57fe5b145b156110ca575083610fad565b6110d685858585610e60565b95945050505050565b6110e76128e6565b6001546040516309648a9d60e01b81526001600160a01b03909116906309648a9d90611117908690600401613375565b6102806040518083038186803b15801561113057600080fd5b505afa158015611144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111689190612eba565b905060008151600581111561117957fe5b1480611191575060018151600581111561118f57fe5b145b806111a857506002815160058111156111a657fe5b145b6111c45760405162461bcd60e51b815260040161031090613bac565b6000815160058111156111d357fe5b1461125c57600154604051631ba316dd60e11b81526001600160a01b03909116906337462dba90611208908690600401613375565b6102806040518083038186803b15801561122157600080fd5b505afa158015611235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112599190612eba565b90505b600080611268846105a4565b60015460405163ecef557760e01b815292945090925042916114129184916001600160a01b039091169063ecef5577906112a6908b90600401613484565b60206040518083038186803b1580156112be57600080fd5b505afa1580156112d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f69190612ffe565b60ff16600881111561130457fe5b60015460405163ecef557760e01b81526001600160a01b039091169063ecef557790611334908c906004016134ec565b60206040518083038186803b15801561134c57600080fd5b505afa158015611360573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113849190612ffe565b60ff16600181111561139257fe5b60015460405163135b9f4d60e01b81526001600160a01b039091169063135b9f4d906113c2908d906004016134ab565b60206040518083038186803b1580156113da57600080fd5b505afa1580156113ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102019190612b64565b11156114305760405162461bcd60e51b815260040161031090613ab1565b6114386128e6565b600061144587868861174e565b9150915060006114568888846119d4565b90508061155a5760008651600581111561146c57fe5b14156114d75760015460405163067fe5d760e41b81526001600160a01b03909116906367fe5d70906114a4908b908a906004016135e2565b600060405180830381600087803b1580156114be57600080fd5b505af11580156114d2573d6000803e3d6000fd5b505050505b60015460405163d981e77360e01b81526001600160a01b039091169063d981e77390611509908b908b90600401613395565b600060405180830381600087803b15801561152357600080fd5b505af1158015611537573d6000803e3d6000fd5b505050506000611548600b86610e42565b905061155589858361174e565b509350505b600154604051631f61c37560e21b81526001600160a01b0390911690637d870dd49061158c908b9087906004016135e2565b600060405180830381600087803b1580156115a657600080fd5b505af11580156115ba573d6000803e3d6000fd5b50505050801515600114156116305760015460405163de07a17360e01b81526001600160a01b039091169063de07a173906115fd908b908b9087906004016133a3565b600060405180830381600087803b15801561161757600080fd5b505af115801561162b573d6000803e3d6000fd5b505050505b877fd255be8589971f117e0e4377177282fb7cce66e378bfb1b7eafddd05e4f181e960018315151461166357600b611665565b865b86856040516116769392919061363b565b60405180910390a25050505050505050565b3390565b6000600182600181111561169c57fe5b14156116e1576116ab83611e0a565b600614156116c5576116be836002611e1d565b905061026a565b6116ce83611e0a565b600714156116e1576116be836001611e1d565b5090919050565b60006116f8620151808304611e32565b509392505050565b6000600182600181111561171057fe5b14156116e15761171f83611e0a565b60061415611732576116be836001611ec8565b61173b83611e0a565b600714156116e1576116be836002611ec8565b6117566128e6565b60015460405163ee43eda160e01b815260009182916001600160a01b039091169063ee43eda19061178b908990600401613375565b60206040518083038186803b1580156117a357600080fd5b505afa1580156117b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117db9190612ae9565b90506117e5612980565b6001546040516335f1cded60e11b81526001600160a01b0390911690636be39bda90611815908a90600401613375565b6102a06040518083038186803b15801561182e57600080fd5b505afa158015611842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118669190612d93565b9050600080611874876105a4565b915091506000846001600160a01b031663c26b940b858b8b6118af8f896118aa8a8d608001518e602001518f610120015161106b565b611edd565b6040518563ffffffff1660e01b81526004016118ce9493929190613c98565b60206040518083038186803b1580156118e657600080fd5b505afa1580156118fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191e9190612b64565b9050846001600160a01b031663d4f8d3f3858b8b6119558f896119508a8d608001518e602001518f610120015161106b565b6120d4565b6040518563ffffffff1660e01b81526004016119749493929190613c98565b6102806040518083038186803b15801561198d57600080fd5b505afa1580156119a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c59190612eba565b9a909950975050505050505050565b600083158015906119e457508215155b611a005760405162461bcd60e51b8152600401610310906139d9565b81611a0d57506001611e03565b60015460405163eb01255960e01b81526000916001600160a01b03169063eb01255990611a3e9088906004016133fc565b60206040518083038186803b158015611a5657600080fd5b505afa158015611a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8e9190612ae9565b9050611a98612a02565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690611ac89089906004016133b9565b60806040518083038186803b158015611ae057600080fd5b505afa158015611af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b189190612e9f565b9050600481606001516004811115611b2c57fe5b1415611b41578051611b3d9061022c565b5091505b611b496128bf565b60015460405163e50e0ef760e01b81526001600160a01b039091169063e50e0ef790611b79908a90600401613375565b60806040518083038186803b158015611b9157600080fd5b505afa158015611ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc99190612c59565b90506000806000871315611bf8575060408201516001600160a01b038216611bf357826020015191505b611c11565b5081516001600160a01b038216611c1157826060015191505b6000808813611c24578760001902611c26565b875b905080866001600160a01b031663dd62ed3e84306040518363ffffffff1660e01b8152600401611c5792919061331e565b60206040518083038186803b158015611c6f57600080fd5b505afa158015611c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca79190612b64565b1080611d2e57506040516370a0823160e01b815281906001600160a01b038816906370a0823190611cdc90869060040161330a565b60206040518083038186803b158015611cf457600080fd5b505afa158015611d08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2c9190612b64565b105b15611d7857897f4f269a19b64cfff0bdee7fd3cdaec44e1fe38ce2ff55d3009a89fac6ecbe9f2c604051611d619061374b565b60405180910390a260009650505050505050611e03565b6040516323b872dd60e01b81526001600160a01b038716906323b872dd90611da890859087908690600401613338565b602060405180830381600087803b158015611dc257600080fd5b505af1158015611dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfa9190612b30565b96505050505050505b9392505050565b6007620151809091046003010660010190565b62015180810282018281101561026a57600080fd5b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611e8957fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b62015180810282038281111561026a57600080fd5b60015460405163eb01255960e01b815260009182916001600160a01b039091169063eb01255990611f129088906004016133fc565b60206040518083038186803b158015611f2a57600080fd5b505afa158015611f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f629190612ae9565b60015460405163eb01255960e01b81529192506000916001600160a01b039091169063eb01255990611f98908990600401613460565b60206040518083038186803b158015611fb057600080fd5b505afa158015611fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe89190612ae9565b9050806001600160a01b0316826001600160a01b0316146120cb5760025460405160009182916001600160a01b03909116906308a4ec1090612030908790879060200161331e565b60405160208183030381529060405280519060200120886040518363ffffffff1660e01b8152600401612064929190613395565b604080518083038186803b15801561207b57600080fd5b505afa15801561208f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b39190612c2a565b9150915080156120c857509250611e03915050565b50505b50509392505050565b6000600d83601c8111156120e457fe5b14156122025760025460015460405163354770f760e21b815260009283926001600160a01b03918216926308a4ec10929091169063d51dc3dc9061212c908b90600401613431565b60206040518083038186803b15801561214457600080fd5b505afa158015612158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217c9190612b64565b866040518363ffffffff1660e01b815260040161219a929190613395565b604080518083038186803b1580156121b157600080fd5b505afa1580156121c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e99190612c2a565b9150915080156121fb57509050611e03565b50506127f9565b600b83601c81111561221057fe5b141561221d575042611e03565b601a83601c81111561222b57fe5b141561255e57612239612a02565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690612269908890600401613506565b60806040518083038186803b15801561228157600080fd5b505afa158015612295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b99190612e9f565b90506003816060015160048111156122cd57fe5b14156123fe5780516020820151604051631392c59160e11b81526001600160a01b038216906327258b2290612306908590600401613375565b60206040518083038186803b15801561231e57600080fd5b505afa158015612332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123569190612b30565b15156001146123775760405162461bcd60e51b815260040161031090613852565b604051636a899b9b60e01b81526001600160a01b03821690636a899b9b906123a39085906004016134c9565b60206040518083038186803b1580156123bb57600080fd5b505afa1580156123cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f39190612b64565b9350611e0392505050565b612406612a02565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d76906124369089906004016133b9565b60806040518083038186803b15801561244e57600080fd5b505afa158015612462573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124869190612e9f565b905060028160400151600481111561249a57fe5b1480156124b657506000816060015160048111156124b457fe5b145b156121fb576002548151604051628a4ec160e41b815260009283926001600160a01b03909116916308a4ec10916124f1918a90600401613395565b604080518083038186803b15801561250857600080fd5b505afa15801561251c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125409190612c2a565b91509150801561255557509250611e03915050565b505050506127f9565b601783601c81111561256c57fe5b14156127f95761257a612a02565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d76906125aa908890600401613506565b60806040518083038186803b1580156125c257600080fd5b505afa1580156125d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fa9190612e9f565b905060028160400151600481111561260e57fe5b14801561262a575060008160600151600481111561262857fe5b145b156127ef576002548151604051628a4ec160e41b815260009283926001600160a01b03909116916308a4ec1091612665918990600401613395565b604080518083038186803b15801561267c57600080fd5b505afa158015612690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b49190612c2a565b600254855160015460405163135b9f4d60e01b815294965092945060009384936001600160a01b03938416936308a4ec10939291169063135b9f4d906126fe908f90600401613416565b60206040518083038186803b15801561271657600080fd5b505afa15801561272a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274e9190612b64565b6040518363ffffffff1660e01b815260040161276b929190613395565b604080518083038186803b15801561278257600080fd5b505afa158015612796573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ba9190612c2a565b915091508280156127c85750805b156127ea576127dd848363ffffffff61280316565b9550611e03945050505050565b505050505b5060009050611e03565b5060009392505050565b6000816128225760405162461bcd60e51b815260040161031090613bfd565b8261282f5750600061026a565b670de0b6b3a76400008381029084828161284557fe5b05146128635760405162461bcd60e51b815260040161031090613a6b565b826000191480156128775750600160ff1b84145b156128945760405162461bcd60e51b815260040161031090613a6b565b600083828161289f57fe5b05905080610fad5760405162461bcd60e51b815260040161031090613988565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516101e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016129f0612a02565b81526020016129fd612a02565b905290565b604080516080810182526000808252602082018190529091820190815260200160006129fd565b803561026a81613e1c565b805161026a81613e3f565b805161026a81613e4c565b805161026a81613e59565b805161026a81613e73565b803561026a81613e80565b805161026a81613e80565b600060808284031215612a87578081fd5b612a916080613db4565b905081518152602082015160208201526040820151612aaf81613e66565b60408201526060820151612ac281613e66565b606082015292915050565b600060208284031215612ade578081fd5b8135611e0381613e1c565b600060208284031215612afa578081fd5b8151611e0381613e1c565b60008060408385031215612b17578081fd5b8235612b2281613e1c565b946020939093013593505050565b600060208284031215612b41578081fd5b8151611e0381613e31565b600060208284031215612b5d578081fd5b5035919050565b600060208284031215612b75578081fd5b5051919050565b60008060408385031215612b8e578182fd5b50508035926020909101359150565b600060208284031215612bae578081fd5b8135611e0381613e66565b600060208284031215612bca578081fd5b8135611e0381613e73565b600060208284031215612be6578081fd5b8151611e0381613e80565b600060208284031215612c02578081fd5b8135611e0381613e8d565b60008060408385031215612c1f578182fd5b8235612b2281613e8d565b60008060408385031215612c3c578182fd5b825191506020830151612c4e81613e31565b809150509250929050565b600060808284031215612c6a578081fd5b612c746080613db4565b8251612c7f81613e1c565b81526020830151612c8f81613e1c565b60208201526040830151612ca281613e1c565b60408201526060830151612cb581613e1c565b60608201529392505050565b6000806000806000806000878903610340811215612cdd578384fd5b6102a080821215612cec578485fd5b899850880135905067ffffffffffffffff80821115612d09578485fd5b818a018b601f820112612d1a578586fd5b8035925081831115612d2a578586fd5b8b60208085028301011115612d3d578586fd5b6020019750909550612d559050896102c08a01612a29565b9350612d65896102e08a01612a29565b9250612d75896103008a01612a29565b9150612d85896103208a01612a29565b905092959891949750929550565b60006102a08284031215612da5578081fd5b612db06101e0613db4565b612dba8484612a6b565b8152612dc98460208501612a3f565b6020820152612ddb8460408501612a55565b6040820152612ded8460608501612a4a565b6060820152612dff8460808501612a34565b6080820152612e118460a08501612a3f565b60a0820152612e238460c08501612a4a565b60c0820152612e358460e08501612a3f565b60e0820152610100838101519082015261012080840151908201526101408084015190820152610160808401519082015261018080840151908201526101a0612e8085828601612a76565b90820152612e92846102208501612a76565b6101c08201529392505050565b600060808284031215612eb0578081fd5b611e038383612a76565b6000610280808385031215612ecd578182fd5b612ed681613db4565b612ee08585612a4a565b81526020848101519082015260408085015190820152606080850151908201526080808501519082015260a0808501519082015260c0808501519082015260e08085015190820152610100808501519082015261012080850151908201526101408085015190820152610160808501519082015261018080850151908201526101a080850151908201526101c080850151908201526101e080850151908201526102008085015190820152610220808501519082015261024080850151908201526102609384015193810193909352509092915050565b60008060008060808587031215612fcc578182fd5b843593506020850135612fde81613e3f565b92506040850135612fee81613e4c565b9396929550929360600135925050565b60006020828403121561300f578081fd5b815160ff81168114611e03578182fd5b6009811061302957fe5b9052565b6002811061302957fe5b6006811061302957fe5b600d811061302957fe5b6013811061302957fe5b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b6020810161309f8361309a8385612a60565b61304b565b6130a98183613de8565b6130b6602085018261302d565b50506130c56040820182613e02565b6130d26040840182613041565b506130e06060820182613df5565b6130ed6060840182613037565b506130fb6080820182613ddb565b613108608084018261301f565b5061311660a0820182613de8565b61312360a084018261302d565b5061313160c0820182613df5565b61313e60c0840182613037565b5061314c60e0820182613de8565b61315960e084018261302d565b50610100818101359083015261012080820135908301526101408082013590830152610160808201359083015261018080820135908301526101a06131a28184018284016131b9565b506102206131b48184018284016131b9565b505050565b803582526020810135602083015260408101356131d581613e66565b6131de81613e0f565b604083015260608101356131f181613e66565b6131fa81613e0f565b806060840152505050565b8051825260208101516020830152604081015161322181613e0f565b604083015260608101516131fa81613e0f565b61323f828251613037565b6020818101519083015260408082015190830152606080820151908301526080808201519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012080820151908301526101408082015190830152610160808201519083015261018080820151908301526101a080820151908301526101c080820151908301526101e0808201519083015261020080820151908301526102208082015190830152610240808201519083015261026090810151910152565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b90815260200190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b9283526020830191909152604082015260600190565b9081527231b7b73a3930b1ba2932b332b932b731b2af9960691b602082015260400190565b9081526b636f6e7472616374526f6c6560a01b602082015260400190565b9081526763757272656e637960c01b602082015260400190565b9081526869737375654461746560b81b602082015260400190565b9081527f6d61726b65744f626a656374436f646552617465526573657400000000000000602082015260400190565b90815271736574746c656d656e7443757272656e637960701b602082015260400190565b90815274313ab9b4b732b9b9a230bca1b7b73b32b73a34b7b760591b602082015260400190565b9081526b6d617475726974794461746560a01b602082015260400190565b908152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b602082015260400190565b9081526731b0b632b73230b960c11b602082015260400190565b90815272636f6e74726163745265666572656e63655f3160681b602082015260400190565b83815261034081016135406020830185613088565b610fad6102c0830184613055565b60006106408b8352613563602084018c613088565b6135716102c084018b613234565b610540830181905282018790526106606001600160fb1b03881115613594578182fd5b60208802808a838601378301019081526135b2610560830187613055565b6001600160a01b039485166105e08301529284166106008201529216610620909201919091529695505050505050565b8281526102a08101611e036020830184613234565b606081016013851061360557fe5b9381526001600160a01b039283166020820152911660409091015290565b60408101601d841061363157fe5b9281526020015290565b60608101601d851061364957fe5b938152602081019290925260409091015290565b60208082526038908201527f414e4e4163746f722e696e697469616c697a653a20434f4e54524143545f545960408201527f50455f4f465f454e47494e455f554e535550504f525445440000000000000000606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f454160408201526a149312515497d15591539560aa1b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b71494e53554646494349454e545f46554e445360701b815260200190565b60208082526021908201527f426173654163746f722e70726f67726573733a204e4f5f4e4558545f4556454e6040820152601560fa1b606082015260800190565b6020808252602b908201527f4345434163746f722e696e697469616c697a653a20494e56414c49445f434f4e60408201526a54524143545f524f4c455360a81b606082015260800190565b60208082526038908201527f4345434163746f722e696e697469616c697a653a20494e56414c49445f434f4e60408201527f54524143545f5245464552454e43455f315f4f424a4543540000000000000000606082015260800190565b60208082526035908201527f426173654163746f722e67657445787465726e616c44617461466f725354463a604082015274081054d4d15517d113d154d7d393d517d1561254d5605a1b606082015260800190565b6020808252602e908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f554e60408201526d1111549316525391d7d15591539560921b606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20554e415554484f5260408201526a24ad22a22fa9a2a72222a960a91b606082015260800190565b60208082526028908201527f426173654163746f722e70726f67726573733a2041535345545f444f45535f4e60408201526713d517d1561254d560c21b606082015260800190565b60208082526031908201527f5369676e65644d6174682e666c6f61744469763a2043414e4e4f545f524550526040820152704553454e545f4752414e554c415249545960781b606082015260800190565b6020808252603b908201527f426173654163746f722e736574746c655061796f6666466f724576656e743a2060408201527f494e56414c49445f46554e4354494f4e5f504152414d45544552530000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f5369676e65644d6174682e666c6f61744469763a204f564552464c4f575f4445604082015265151150d5115160d21b606082015260800190565b60208082526033908201527f414e4e4163746f722e70726f636573734576656e743a204e4558545f4556454e6040820152721517d393d517d6515517d4d0d2115115531151606a1b606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f504560408201526a1391125391d7d15591539560aa1b606082015260800190565b60208082526038908201527f4345434163746f722e696e697469616c697a653a20494e56414c49445f434f4e60408201527f54524143545f5245464552454e43455f325f4f424a4543540000000000000000606082015260800190565b60208082526031908201527f426173654163746f722e70726f636573734576656e743a2041535345545f524560408201527041434845445f46494e414c5f535441544560781b606082015260800190565b60208082526024908201527f5369676e65644d6174682e666c6f61744469763a20444956494445445f42595f6040820152635a45524f60e01b606082015260800190565b6102a0810161026a8284613088565b6102e08101613c5f8286613088565b6001600160a01b03939093166102a08201526102c00152919050565b6102c08101613c8a8285613088565b826102a08301529392505050565b600061056082019050613cac82875161304b565b6020860151613cbe602084018261302d565b506040860151613cd16040840182613041565b506060860151613ce46060840182613037565b506080860151613cf7608084018261301f565b5060a0860151613d0a60a084018261302d565b5060c0860151613d1d60c0840182613037565b5060e0860151613d3060e084018261302d565b50610100868101519083015261012080870151908301526101408087015190830152610160808701519083015261018080870151908301526101a080870151613d7b82850182613205565b50506101c0860151613d91610220840182613205565b50613da06102a0830186613234565b610520820193909352610540015292915050565b60405181810167ffffffffffffffff81118282101715613dd357600080fd5b604052919050565b60008235611e0381613e3f565b60008235611e0381613e4c565b60008235611e0381613e59565b60008235611e0381613e73565b60058110613e1957fe5b50565b6001600160a01b0381168114613e1957600080fd5b8015158114613e1957600080fd5b60098110613e1957600080fd5b60028110613e1957600080fd5b60068110613e1957600080fd5b60058110613e1957600080fd5b600d8110613e1957600080fd5b60138110613e1957600080fd5b601d8110613e1957600080fdfea26469706673582212204385b5cadf7538c5d0e19aa8bf32f8010b2b5f051461f307c79ca6c47b67848a64736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063e05a66e011610066578063e05a66e0146101e0578063e726d680146101f3578063f2fde38b14610206578063f5586e0514610219576100f5565b80638da5cb5b146101a8578063979d7e86146101bd578063a39c1d6b146101c5578063d56a1ddf146101cd576100f5565b8063715018a6116100d3578063715018a61461015957806372540003146101615780637aebd2a814610182578063811322fb14610195576100f5565b8063645a26bd146100fa5780636778e0e9146101245780636b6ba66414610144575b600080fd5b61010d610108366004612b4c565b61022c565b60405161011b92919061335c565b60405180910390f35b610137610132366004612b05565b610245565b60405161011b9190613375565b610157610152366004612b7c565b610270565b005b610157610525565b61017461016f366004612b4c565b6105a4565b60405161011b929190613623565b610157610190366004612b4c565b6105cd565b6101376101a3366004612bf1565b61082b565b6101b0610839565b60405161011b919061330a565b6101b0610848565b6101b0610857565b6101576101db366004612cc1565b610866565b6101376101ee366004612c0d565b610e42565b610137610201366004612fb7565b610e60565b610157610214366004612acd565b610fb5565b610137610227366004612fb7565b61106b565b606081901c6bffffffffffffffffffffffff8216915091565b6bffffffffffffffffffffffff19606083901b166bffffffffffffffffffffffff8216175b92915050565b60015460405163747be51f60e11b81526001600160a01b039091169063e8f7ca3e906102a2908590339060040161337e565b602060405180830381600087803b1580156102bc57600080fd5b505af11580156102d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f49190612b30565b6103195760405162461bcd60e51b8152600401610310906138f5565b60405180910390fd5b60015460405163f52f84e160e01b81526000916001600160a01b03169063f52f84e19061034a908690600401613375565b60206040518083038186803b15801561036257600080fd5b505afa158015610376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190612b64565b146103b75760405162461bcd60e51b815260040161031090613b04565b600154604051631d7a1ab960e21b81526000916001600160a01b0316906375e86ae4906103e8908690600401613375565b60206040518083038186803b15801561040057600080fd5b505afa158015610414573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104389190612b64565b146104555760405162461bcd60e51b8152600401610310906138a7565b60015460405163b828204160e01b81526000916104dc916001600160a01b039091169063b82820419061048c908790600401613375565b60206040518083038186803b1580156104a457600080fd5b505afa1580156104b8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016f9190612b64565b91505060006104ea836105a4565b9150508115806104f957508181105b6105155760405162461bcd60e51b8152600401610310906136ba565b61051f84846110df565b50505050565b61052d611688565b6000546001600160a01b0390811691161461055a5760405162461bcd60e51b815260040161031090613a36565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c8111156105b857fe5b92505067ffffffffffffffff83169050915091565b600154604051631392c59160e11b81526001600160a01b03909116906327258b22906105fd908490600401613375565b60206040518083038186803b15801561061557600080fd5b505afa158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d9190612b30565b6106695760405162461bcd60e51b815260040161031090613940565b600154604051630316dd6960e21b81526000916001600160a01b031690630c5b75a49061069a908590600401613375565b602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ec9190612b64565b90508061077657600154604051631d7a1ab960e21b81526001600160a01b03909116906375e86ae490610723908590600401613375565b60206040518083038186803b15801561073b57600080fd5b505afa15801561074f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107739190612b64565b90505b80610800576001546040516361db73e160e11b81526001600160a01b039091169063c3b6e7c2906107ab908590600401613375565b602060405180830381600087803b1580156107c557600080fd5b505af11580156107d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd9190612b64565b90505b8061081d5760405162461bcd60e51b815260040161031090613769565b61082782826110df565b5050565b600081601c81111561026a57fe5b6000546001600160a01b031690565b6001546001600160a01b031681565b6002546001600160a01b031681565b6001600160a01b038416158015906108f957506011846001600160a01b031663cb2ef6f76040518163ffffffff1660e01b815260040160206040518083038186803b1580156108b457600080fd5b505afa1580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190612bd5565b60128111156108f757fe5b145b6109155760405162461bcd60e51b81526004016103109061365d565b6000874260405160200161092a929190613c7b565b60405160208183030381529060405280519060200120905061094a6128bf565b600361095e6102208b016102008c01612b9d565b600481111561096957fe5b1415610991576101a08901356109915760405162461bcd60e51b8152600401610310906137f5565b60046109a56102a08b016102808c01612b9d565b60048111156109b057fe5b1415610ce7576102208901356109d85760405162461bcd60e51b815260040161031090613b4f565b8884426040516020016109ed93929190613c50565b60408051601f1981840301815290829052805160209091012060015463ecef557760e01b83529093506101a08b0135916000916001600160a01b03169063ecef557790610a3e9085906004016133de565b60206040518083038186803b158015610a5657600080fd5b505afa158015610a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8e9190612ffe565b60ff16600c811115610a9c57fe5b9050610aa66128bf565b60405163e50e0ef760e01b81526001600160a01b0387169063e50e0ef790610ad2908690600401613375565b60806040518083038186803b158015610aea57600080fd5b505afa158015610afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b229190612c59565b90506006610b3660608e0160408f01612bb9565b600c811115610b4157fe5b148015610b595750600082600c811115610b5757fe5b145b15610bb657604051806080016040528082600001516001600160a01b0316815260200182602001516001600160a01b03168152602001886001600160a01b0316815260200182606001516001600160a01b03168152509350610c60565b6007610bc860608e0160408f01612bb9565b600c811115610bd357fe5b148015610beb5750600182600c811115610be957fe5b145b15610c48576040518060800160405280886001600160a01b0316815260200182602001516001600160a01b0316815260200182604001516001600160a01b0316815260200182606001516001600160a01b03168152509350610c60565b60405162461bcd60e51b8152600401610310906137aa565b866001600160a01b031663f1acef64868e876040518463ffffffff1660e01b8152600401610c909392919061352b565b602060405180830381600087803b158015610caa57600080fd5b505af1158015610cbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce29190612b30565b505050505b610cef6128e6565b604051632630a7a960e21b81526001600160a01b038816906398c29ea490610d1b908d90600401613c41565b6102806040518083038186803b158015610d3457600080fd5b505afa158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c9190612eba565b9050600160009054906101000a90046001600160a01b03166001600160a01b031663f82277d2848c848d8d888e308f6040518a63ffffffff1660e01b8152600401610dbf9998979695949392919061354e565b600060405180830381600087803b158015610dd957600080fd5b505af1158015610ded573d6000803e3d6000fd5b50505050827fc5df678b84aa92f5f59981df8c9997b366d886de25771c5f753015c2e14e907a601184600001518560400151604051610e2e939291906135f7565b60405180910390a250505050505050505050565b60008160f884601c811115610e5357fe5b60ff16901b179392505050565b600081851415610e71575083610fad565b6001846008811115610e7f57fe5b1480610e9657506003846008811115610e9457fe5b145b15610eac57610ea5858461168c565b9050610fad565b6002846008811115610eba57fe5b1480610ed157506004846008811115610ecf57fe5b145b15610f15576000610ee2868561168c565b9050610eed866116e8565b610ef6826116e8565b1415610f03579050610fad565b610f0d8685611700565b915050610fad565b6005846008811115610f2357fe5b1480610f3a57506007846008811115610f3857fe5b145b15610f4957610ea58584611700565b6006846008811115610f5757fe5b1480610f6e57506008846008811115610f6c57fe5b145b15610faa576000610f7f8685611700565b9050610f8a866116e8565b610f93826116e8565b1415610fa0579050610fad565b610f0d868561168c565b50835b949350505050565b610fbd611688565b6000546001600160a01b03908116911614610fea5760405162461bcd60e51b815260040161031090613a36565b6001600160a01b0381166110105760405162461bcd60e51b815260040161031090613705565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000600384600881111561107b57fe5b14806110925750600484600881111561109057fe5b145b806110a8575060078460088111156110a657fe5b145b806110be575060088460088111156110bc57fe5b145b156110ca575083610fad565b6110d685858585610e60565b95945050505050565b6110e76128e6565b6001546040516309648a9d60e01b81526001600160a01b03909116906309648a9d90611117908690600401613375565b6102806040518083038186803b15801561113057600080fd5b505afa158015611144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111689190612eba565b905060008151600581111561117957fe5b1480611191575060018151600581111561118f57fe5b145b806111a857506002815160058111156111a657fe5b145b6111c45760405162461bcd60e51b815260040161031090613bac565b6000815160058111156111d357fe5b1461125c57600154604051631ba316dd60e11b81526001600160a01b03909116906337462dba90611208908690600401613375565b6102806040518083038186803b15801561122157600080fd5b505afa158015611235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112599190612eba565b90505b600080611268846105a4565b60015460405163ecef557760e01b815292945090925042916114129184916001600160a01b039091169063ecef5577906112a6908b90600401613484565b60206040518083038186803b1580156112be57600080fd5b505afa1580156112d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f69190612ffe565b60ff16600881111561130457fe5b60015460405163ecef557760e01b81526001600160a01b039091169063ecef557790611334908c906004016134ec565b60206040518083038186803b15801561134c57600080fd5b505afa158015611360573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113849190612ffe565b60ff16600181111561139257fe5b60015460405163135b9f4d60e01b81526001600160a01b039091169063135b9f4d906113c2908d906004016134ab565b60206040518083038186803b1580156113da57600080fd5b505afa1580156113ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102019190612b64565b11156114305760405162461bcd60e51b815260040161031090613ab1565b6114386128e6565b600061144587868861174e565b9150915060006114568888846119d4565b90508061155a5760008651600581111561146c57fe5b14156114d75760015460405163067fe5d760e41b81526001600160a01b03909116906367fe5d70906114a4908b908a906004016135e2565b600060405180830381600087803b1580156114be57600080fd5b505af11580156114d2573d6000803e3d6000fd5b505050505b60015460405163d981e77360e01b81526001600160a01b039091169063d981e77390611509908b908b90600401613395565b600060405180830381600087803b15801561152357600080fd5b505af1158015611537573d6000803e3d6000fd5b505050506000611548600b86610e42565b905061155589858361174e565b509350505b600154604051631f61c37560e21b81526001600160a01b0390911690637d870dd49061158c908b9087906004016135e2565b600060405180830381600087803b1580156115a657600080fd5b505af11580156115ba573d6000803e3d6000fd5b50505050801515600114156116305760015460405163de07a17360e01b81526001600160a01b039091169063de07a173906115fd908b908b9087906004016133a3565b600060405180830381600087803b15801561161757600080fd5b505af115801561162b573d6000803e3d6000fd5b505050505b877fd255be8589971f117e0e4377177282fb7cce66e378bfb1b7eafddd05e4f181e960018315151461166357600b611665565b865b86856040516116769392919061363b565b60405180910390a25050505050505050565b3390565b6000600182600181111561169c57fe5b14156116e1576116ab83611e0a565b600614156116c5576116be836002611e1d565b905061026a565b6116ce83611e0a565b600714156116e1576116be836001611e1d565b5090919050565b60006116f8620151808304611e32565b509392505050565b6000600182600181111561171057fe5b14156116e15761171f83611e0a565b60061415611732576116be836001611ec8565b61173b83611e0a565b600714156116e1576116be836002611ec8565b6117566128e6565b60015460405163ee43eda160e01b815260009182916001600160a01b039091169063ee43eda19061178b908990600401613375565b60206040518083038186803b1580156117a357600080fd5b505afa1580156117b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117db9190612ae9565b90506117e5612980565b6001546040516335f1cded60e11b81526001600160a01b0390911690636be39bda90611815908a90600401613375565b6102a06040518083038186803b15801561182e57600080fd5b505afa158015611842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118669190612d93565b9050600080611874876105a4565b915091506000846001600160a01b031663c26b940b858b8b6118af8f896118aa8a8d608001518e602001518f610120015161106b565b611edd565b6040518563ffffffff1660e01b81526004016118ce9493929190613c98565b60206040518083038186803b1580156118e657600080fd5b505afa1580156118fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191e9190612b64565b9050846001600160a01b031663d4f8d3f3858b8b6119558f896119508a8d608001518e602001518f610120015161106b565b6120d4565b6040518563ffffffff1660e01b81526004016119749493929190613c98565b6102806040518083038186803b15801561198d57600080fd5b505afa1580156119a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c59190612eba565b9a909950975050505050505050565b600083158015906119e457508215155b611a005760405162461bcd60e51b8152600401610310906139d9565b81611a0d57506001611e03565b60015460405163eb01255960e01b81526000916001600160a01b03169063eb01255990611a3e9088906004016133fc565b60206040518083038186803b158015611a5657600080fd5b505afa158015611a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8e9190612ae9565b9050611a98612a02565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690611ac89089906004016133b9565b60806040518083038186803b158015611ae057600080fd5b505afa158015611af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b189190612e9f565b9050600481606001516004811115611b2c57fe5b1415611b41578051611b3d9061022c565b5091505b611b496128bf565b60015460405163e50e0ef760e01b81526001600160a01b039091169063e50e0ef790611b79908a90600401613375565b60806040518083038186803b158015611b9157600080fd5b505afa158015611ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc99190612c59565b90506000806000871315611bf8575060408201516001600160a01b038216611bf357826020015191505b611c11565b5081516001600160a01b038216611c1157826060015191505b6000808813611c24578760001902611c26565b875b905080866001600160a01b031663dd62ed3e84306040518363ffffffff1660e01b8152600401611c5792919061331e565b60206040518083038186803b158015611c6f57600080fd5b505afa158015611c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca79190612b64565b1080611d2e57506040516370a0823160e01b815281906001600160a01b038816906370a0823190611cdc90869060040161330a565b60206040518083038186803b158015611cf457600080fd5b505afa158015611d08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2c9190612b64565b105b15611d7857897f4f269a19b64cfff0bdee7fd3cdaec44e1fe38ce2ff55d3009a89fac6ecbe9f2c604051611d619061374b565b60405180910390a260009650505050505050611e03565b6040516323b872dd60e01b81526001600160a01b038716906323b872dd90611da890859087908690600401613338565b602060405180830381600087803b158015611dc257600080fd5b505af1158015611dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfa9190612b30565b96505050505050505b9392505050565b6007620151809091046003010660010190565b62015180810282018281101561026a57600080fd5b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611e8957fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b62015180810282038281111561026a57600080fd5b60015460405163eb01255960e01b815260009182916001600160a01b039091169063eb01255990611f129088906004016133fc565b60206040518083038186803b158015611f2a57600080fd5b505afa158015611f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f629190612ae9565b60015460405163eb01255960e01b81529192506000916001600160a01b039091169063eb01255990611f98908990600401613460565b60206040518083038186803b158015611fb057600080fd5b505afa158015611fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe89190612ae9565b9050806001600160a01b0316826001600160a01b0316146120cb5760025460405160009182916001600160a01b03909116906308a4ec1090612030908790879060200161331e565b60405160208183030381529060405280519060200120886040518363ffffffff1660e01b8152600401612064929190613395565b604080518083038186803b15801561207b57600080fd5b505afa15801561208f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b39190612c2a565b9150915080156120c857509250611e03915050565b50505b50509392505050565b6000600d83601c8111156120e457fe5b14156122025760025460015460405163354770f760e21b815260009283926001600160a01b03918216926308a4ec10929091169063d51dc3dc9061212c908b90600401613431565b60206040518083038186803b15801561214457600080fd5b505afa158015612158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217c9190612b64565b866040518363ffffffff1660e01b815260040161219a929190613395565b604080518083038186803b1580156121b157600080fd5b505afa1580156121c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e99190612c2a565b9150915080156121fb57509050611e03565b50506127f9565b600b83601c81111561221057fe5b141561221d575042611e03565b601a83601c81111561222b57fe5b141561255e57612239612a02565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690612269908890600401613506565b60806040518083038186803b15801561228157600080fd5b505afa158015612295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b99190612e9f565b90506003816060015160048111156122cd57fe5b14156123fe5780516020820151604051631392c59160e11b81526001600160a01b038216906327258b2290612306908590600401613375565b60206040518083038186803b15801561231e57600080fd5b505afa158015612332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123569190612b30565b15156001146123775760405162461bcd60e51b815260040161031090613852565b604051636a899b9b60e01b81526001600160a01b03821690636a899b9b906123a39085906004016134c9565b60206040518083038186803b1580156123bb57600080fd5b505afa1580156123cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f39190612b64565b9350611e0392505050565b612406612a02565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d76906124369089906004016133b9565b60806040518083038186803b15801561244e57600080fd5b505afa158015612462573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124869190612e9f565b905060028160400151600481111561249a57fe5b1480156124b657506000816060015160048111156124b457fe5b145b156121fb576002548151604051628a4ec160e41b815260009283926001600160a01b03909116916308a4ec10916124f1918a90600401613395565b604080518083038186803b15801561250857600080fd5b505afa15801561251c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125409190612c2a565b91509150801561255557509250611e03915050565b505050506127f9565b601783601c81111561256c57fe5b14156127f95761257a612a02565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d76906125aa908890600401613506565b60806040518083038186803b1580156125c257600080fd5b505afa1580156125d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fa9190612e9f565b905060028160400151600481111561260e57fe5b14801561262a575060008160600151600481111561262857fe5b145b156127ef576002548151604051628a4ec160e41b815260009283926001600160a01b03909116916308a4ec1091612665918990600401613395565b604080518083038186803b15801561267c57600080fd5b505afa158015612690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b49190612c2a565b600254855160015460405163135b9f4d60e01b815294965092945060009384936001600160a01b03938416936308a4ec10939291169063135b9f4d906126fe908f90600401613416565b60206040518083038186803b15801561271657600080fd5b505afa15801561272a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274e9190612b64565b6040518363ffffffff1660e01b815260040161276b929190613395565b604080518083038186803b15801561278257600080fd5b505afa158015612796573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ba9190612c2a565b915091508280156127c85750805b156127ea576127dd848363ffffffff61280316565b9550611e03945050505050565b505050505b5060009050611e03565b5060009392505050565b6000816128225760405162461bcd60e51b815260040161031090613bfd565b8261282f5750600061026a565b670de0b6b3a76400008381029084828161284557fe5b05146128635760405162461bcd60e51b815260040161031090613a6b565b826000191480156128775750600160ff1b84145b156128945760405162461bcd60e51b815260040161031090613a6b565b600083828161289f57fe5b05905080610fad5760405162461bcd60e51b815260040161031090613988565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516101e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016129f0612a02565b81526020016129fd612a02565b905290565b604080516080810182526000808252602082018190529091820190815260200160006129fd565b803561026a81613e1c565b805161026a81613e3f565b805161026a81613e4c565b805161026a81613e59565b805161026a81613e73565b803561026a81613e80565b805161026a81613e80565b600060808284031215612a87578081fd5b612a916080613db4565b905081518152602082015160208201526040820151612aaf81613e66565b60408201526060820151612ac281613e66565b606082015292915050565b600060208284031215612ade578081fd5b8135611e0381613e1c565b600060208284031215612afa578081fd5b8151611e0381613e1c565b60008060408385031215612b17578081fd5b8235612b2281613e1c565b946020939093013593505050565b600060208284031215612b41578081fd5b8151611e0381613e31565b600060208284031215612b5d578081fd5b5035919050565b600060208284031215612b75578081fd5b5051919050565b60008060408385031215612b8e578182fd5b50508035926020909101359150565b600060208284031215612bae578081fd5b8135611e0381613e66565b600060208284031215612bca578081fd5b8135611e0381613e73565b600060208284031215612be6578081fd5b8151611e0381613e80565b600060208284031215612c02578081fd5b8135611e0381613e8d565b60008060408385031215612c1f578182fd5b8235612b2281613e8d565b60008060408385031215612c3c578182fd5b825191506020830151612c4e81613e31565b809150509250929050565b600060808284031215612c6a578081fd5b612c746080613db4565b8251612c7f81613e1c565b81526020830151612c8f81613e1c565b60208201526040830151612ca281613e1c565b60408201526060830151612cb581613e1c565b60608201529392505050565b6000806000806000806000878903610340811215612cdd578384fd5b6102a080821215612cec578485fd5b899850880135905067ffffffffffffffff80821115612d09578485fd5b818a018b601f820112612d1a578586fd5b8035925081831115612d2a578586fd5b8b60208085028301011115612d3d578586fd5b6020019750909550612d559050896102c08a01612a29565b9350612d65896102e08a01612a29565b9250612d75896103008a01612a29565b9150612d85896103208a01612a29565b905092959891949750929550565b60006102a08284031215612da5578081fd5b612db06101e0613db4565b612dba8484612a6b565b8152612dc98460208501612a3f565b6020820152612ddb8460408501612a55565b6040820152612ded8460608501612a4a565b6060820152612dff8460808501612a34565b6080820152612e118460a08501612a3f565b60a0820152612e238460c08501612a4a565b60c0820152612e358460e08501612a3f565b60e0820152610100838101519082015261012080840151908201526101408084015190820152610160808401519082015261018080840151908201526101a0612e8085828601612a76565b90820152612e92846102208501612a76565b6101c08201529392505050565b600060808284031215612eb0578081fd5b611e038383612a76565b6000610280808385031215612ecd578182fd5b612ed681613db4565b612ee08585612a4a565b81526020848101519082015260408085015190820152606080850151908201526080808501519082015260a0808501519082015260c0808501519082015260e08085015190820152610100808501519082015261012080850151908201526101408085015190820152610160808501519082015261018080850151908201526101a080850151908201526101c080850151908201526101e080850151908201526102008085015190820152610220808501519082015261024080850151908201526102609384015193810193909352509092915050565b60008060008060808587031215612fcc578182fd5b843593506020850135612fde81613e3f565b92506040850135612fee81613e4c565b9396929550929360600135925050565b60006020828403121561300f578081fd5b815160ff81168114611e03578182fd5b6009811061302957fe5b9052565b6002811061302957fe5b6006811061302957fe5b600d811061302957fe5b6013811061302957fe5b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b6020810161309f8361309a8385612a60565b61304b565b6130a98183613de8565b6130b6602085018261302d565b50506130c56040820182613e02565b6130d26040840182613041565b506130e06060820182613df5565b6130ed6060840182613037565b506130fb6080820182613ddb565b613108608084018261301f565b5061311660a0820182613de8565b61312360a084018261302d565b5061313160c0820182613df5565b61313e60c0840182613037565b5061314c60e0820182613de8565b61315960e084018261302d565b50610100818101359083015261012080820135908301526101408082013590830152610160808201359083015261018080820135908301526101a06131a28184018284016131b9565b506102206131b48184018284016131b9565b505050565b803582526020810135602083015260408101356131d581613e66565b6131de81613e0f565b604083015260608101356131f181613e66565b6131fa81613e0f565b806060840152505050565b8051825260208101516020830152604081015161322181613e0f565b604083015260608101516131fa81613e0f565b61323f828251613037565b6020818101519083015260408082015190830152606080820151908301526080808201519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012080820151908301526101408082015190830152610160808201519083015261018080820151908301526101a080820151908301526101c080820151908301526101e0808201519083015261020080820151908301526102208082015190830152610240808201519083015261026090810151910152565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b90815260200190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b9283526020830191909152604082015260600190565b9081527231b7b73a3930b1ba2932b332b932b731b2af9960691b602082015260400190565b9081526b636f6e7472616374526f6c6560a01b602082015260400190565b9081526763757272656e637960c01b602082015260400190565b9081526869737375654461746560b81b602082015260400190565b9081527f6d61726b65744f626a656374436f646552617465526573657400000000000000602082015260400190565b90815271736574746c656d656e7443757272656e637960701b602082015260400190565b90815274313ab9b4b732b9b9a230bca1b7b73b32b73a34b7b760591b602082015260400190565b9081526b6d617475726974794461746560a01b602082015260400190565b908152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b602082015260400190565b9081526731b0b632b73230b960c11b602082015260400190565b90815272636f6e74726163745265666572656e63655f3160681b602082015260400190565b83815261034081016135406020830185613088565b610fad6102c0830184613055565b60006106408b8352613563602084018c613088565b6135716102c084018b613234565b610540830181905282018790526106606001600160fb1b03881115613594578182fd5b60208802808a838601378301019081526135b2610560830187613055565b6001600160a01b039485166105e08301529284166106008201529216610620909201919091529695505050505050565b8281526102a08101611e036020830184613234565b606081016013851061360557fe5b9381526001600160a01b039283166020820152911660409091015290565b60408101601d841061363157fe5b9281526020015290565b60608101601d851061364957fe5b938152602081019290925260409091015290565b60208082526038908201527f414e4e4163746f722e696e697469616c697a653a20434f4e54524143545f545960408201527f50455f4f465f454e47494e455f554e535550504f525445440000000000000000606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f454160408201526a149312515497d15591539560aa1b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b71494e53554646494349454e545f46554e445360701b815260200190565b60208082526021908201527f426173654163746f722e70726f67726573733a204e4f5f4e4558545f4556454e6040820152601560fa1b606082015260800190565b6020808252602b908201527f4345434163746f722e696e697469616c697a653a20494e56414c49445f434f4e60408201526a54524143545f524f4c455360a81b606082015260800190565b60208082526038908201527f4345434163746f722e696e697469616c697a653a20494e56414c49445f434f4e60408201527f54524143545f5245464552454e43455f315f4f424a4543540000000000000000606082015260800190565b60208082526035908201527f426173654163746f722e67657445787465726e616c44617461466f725354463a604082015274081054d4d15517d113d154d7d393d517d1561254d5605a1b606082015260800190565b6020808252602e908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f554e60408201526d1111549316525391d7d15591539560921b606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20554e415554484f5260408201526a24ad22a22fa9a2a72222a960a91b606082015260800190565b60208082526028908201527f426173654163746f722e70726f67726573733a2041535345545f444f45535f4e60408201526713d517d1561254d560c21b606082015260800190565b60208082526031908201527f5369676e65644d6174682e666c6f61744469763a2043414e4e4f545f524550526040820152704553454e545f4752414e554c415249545960781b606082015260800190565b6020808252603b908201527f426173654163746f722e736574746c655061796f6666466f724576656e743a2060408201527f494e56414c49445f46554e4354494f4e5f504152414d45544552530000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f5369676e65644d6174682e666c6f61744469763a204f564552464c4f575f4445604082015265151150d5115160d21b606082015260800190565b60208082526033908201527f414e4e4163746f722e70726f636573734576656e743a204e4558545f4556454e6040820152721517d393d517d6515517d4d0d2115115531151606a1b606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f504560408201526a1391125391d7d15591539560aa1b606082015260800190565b60208082526038908201527f4345434163746f722e696e697469616c697a653a20494e56414c49445f434f4e60408201527f54524143545f5245464552454e43455f325f4f424a4543540000000000000000606082015260800190565b60208082526031908201527f426173654163746f722e70726f636573734576656e743a2041535345545f524560408201527041434845445f46494e414c5f535441544560781b606082015260800190565b60208082526024908201527f5369676e65644d6174682e666c6f61744469763a20444956494445445f42595f6040820152635a45524f60e01b606082015260800190565b6102a0810161026a8284613088565b6102e08101613c5f8286613088565b6001600160a01b03939093166102a08201526102c00152919050565b6102c08101613c8a8285613088565b826102a08301529392505050565b600061056082019050613cac82875161304b565b6020860151613cbe602084018261302d565b506040860151613cd16040840182613041565b506060860151613ce46060840182613037565b506080860151613cf7608084018261301f565b5060a0860151613d0a60a084018261302d565b5060c0860151613d1d60c0840182613037565b5060e0860151613d3060e084018261302d565b50610100868101519083015261012080870151908301526101408087015190830152610160808701519083015261018080870151908301526101a080870151613d7b82850182613205565b50506101c0860151613d91610220840182613205565b50613da06102a0830186613234565b610520820193909352610540015292915050565b60405181810167ffffffffffffffff81118282101715613dd357600080fd5b604052919050565b60008235611e0381613e3f565b60008235611e0381613e4c565b60008235611e0381613e59565b60008235611e0381613e73565b60058110613e1957fe5b50565b6001600160a01b0381168114613e1957600080fd5b8015158114613e1957600080fd5b60098110613e1957600080fd5b60028110613e1957600080fd5b60068110613e1957600080fd5b60058110613e1957600080fd5b600d8110613e1957600080fd5b60138110613e1957600080fd5b601d8110613e1957600080fdfea26469706673582212204385b5cadf7538c5d0e19aa8bf32f8010b2b5f051461f307c79ca6c47b67848a64736f6c634300060b0033",
  "immutableReferences": {},
  "sourceMap": "331:5616:30:-:0;;;370:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;473:13;488:12;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;-1:-1:-1;1902:13:4;:30;;-1:-1:-1;;;;;1902:30:4;;;-1:-1:-1;;;;;;1902:30:4;;;;;;;1942:12;:28;;;;;;;;;;;-1:-1:-1;331:5616:30;;-1:-1:-1;331:5616:30;768:104:115;855:10;768:104;:::o;377:489:-1:-;;;554:2;542:9;533:7;529:23;525:32;522:2;;;-1:-1;;560:12;522:2;112:6;106:13;124:56;174:5;124:56;:::i;:::-;746:2;818:22;;292:13;612:97;;-1:-1;310:55;292:13;310:55;:::i;:::-;754:96;;;;516:350;;;;;:::o;1340:163::-;-1:-1;;;;;1274:54;;1422:58;;1412:2;;1494:1;;1484:12;1412:2;1406:97;:::o;:::-;331:5616:30;;;;;;",
  "deployedSourceMap": "331:5616:30:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;425:248:22;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;159:260;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3805:1298:4:-;;;;;;:::i;:::-;;:::i;:::-;;1689:145:116;;;:::i;487:293:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2421:929:4:-;;;;;;:::i;:::-;;:::i;956:145:82:-;;;;;;:::i;:::-;;:::i;1066:77:116:-;;;:::i;:::-;;;;;;;:::i;1696:35:4:-;;;:::i;1737:33::-;;;:::i;1118:3695:30:-;;;;;;:::i;:::-;;:::i;234:247:82:-;;;;;;:::i;:::-;;:::i;1599:2214:75:-;;;;;;:::i;:::-;;:::i;1983:240:116:-;;;;;;:::i;:::-;;:::i;648:583:75:-;;;;;;:::i;:::-;;:::i;425:248:22:-;605:2;595:12;;;624:32;;;425:248;;;:::o;159:260::-;-1:-1:-1;;365:2:22;319:48;;;;378:33;;;319:93;159:260;;;;;:::o;3805:1298:4:-;3979:13;;:48;;-1:-1:-1;;;3979:48:4;;-1:-1:-1;;;;;3979:13:4;;;;:27;;:48;;4007:7;;4016:10;;3979:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3958:138;;;;-1:-1:-1;;;3958:138:4;;;;;;;:::i;:::-;;;;;;;;;4292:13;;:38;;-1:-1:-1;;;4292:38:4;;4342:1;;-1:-1:-1;;;;;4292:13:4;;:29;;:38;;4322:7;;4292:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;4271:142;;;;-1:-1:-1;;;4271:142:4;;;;;;;:::i;:::-;4444:13;;:45;;-1:-1:-1;;;4444:45:4;;4501:1;;-1:-1:-1;;;;;4444:13:4;;:36;;:45;;4481:7;;4444:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:59;4423:152;;;;-1:-1:-1;;;4423:152:4;;;;;;;:::i;:::-;4751:13;;:44;;-1:-1:-1;;;4751:44:4;;4701:34;;4739:57;;-1:-1:-1;;;;;4751:13:4;;;;:35;;:44;;4787:7;;4751:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4739:57::-;4698:98;;;4809:33;4846:19;4858:6;4846:11;:19::i;:::-;4806:59;-1:-1:-1;;4896:31:4;;;:91;;;4960:26;4932:25;:54;4896:91;4875:181;;;;-1:-1:-1;;;4875:181:4;;;;;;;:::i;:::-;5067:29;5080:7;5089:6;5067:12;:29::i;:::-;3805:1298;;;;:::o;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;2421:929:4:-;2575:13;;:35;;-1:-1:-1;;;2575:35:4;;-1:-1:-1;;;;;2575:13:4;;;;:26;;:35;;2602:7;;2575:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2554:122;;;;-1:-1:-1;;;2554:122:4;;;;;;;:::i;:::-;2915:13;;:38;;-1:-1:-1;;;2915:38:4;;2898:14;;-1:-1:-1;;;;;2915:13:4;;:29;;:38;;2945:7;;2915:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2898:55;-1:-1:-1;2967:20:4;2963:80;;2998:13;;:45;;-1:-1:-1;;;2998:45:4;;-1:-1:-1;;;;;2998:13:4;;;;:36;;:45;;3035:7;;2998:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2989:54;;2963:80;3057:20;3053:79;;3088:13;;:44;;-1:-1:-1;;;3088:44:4;;-1:-1:-1;;;;;3088:13:4;;;;:35;;:44;;3124:7;;3088:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3079:53;;3053:79;3224:20;3203:100;;;;-1:-1:-1;;;3203:100:4;;;;;;;:::i;:::-;3314:29;3327:7;3336:6;3314:12;:29::i;:::-;2421:929;;:::o;956:145:82:-;1046:7;1084:9;1076:18;;;;;;;1066:77:116;1104:7;1130:6;-1:-1:-1;;;;;1130:6:116;1066:77;:::o;1696:35:4:-;;;-1:-1:-1;;;;;1696:35:4;;:::o;1737:33::-;;;-1:-1:-1;;;;;1737:33:4;;:::o;1118:3695:30:-;-1:-1:-1;;;;;1376:20:30;;;;;;:74;;-1:-1:-1;1434:16:30;1408:6;-1:-1:-1;;;;;1400:28:30;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:50;;;;;;;;;1376:74;1355:177;;;;-1:-1:-1;;;1355:177:30;;;;;;;:::i;:::-;1579:15;1618:5;1625:15;1607:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1597:45;;;;;;1579:63;;1652:31;;:::i;:::-;1817:26;1783:30;;;;;;;;:::i;:::-;:60;;;;;;;;;1779:252;;;1884:25;;;:32;1859:161;;;;-1:-1:-1;;;1859:161:30;;;;;;;:::i;:::-;2169:26;2135:30;;;;;;;;:::i;:::-;:60;;;;;;;;;2131:2127;;;2236:25;;;:32;2211:161;;;;-1:-1:-1;;;2211:161:30;;;;;;;:::i;:::-;2488:5;2503:9;2515:15;2477:54;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2477:54:30;;;;;;;;;;2467:65;;2477:54;2467:65;;;;2791:13;;-1:-1:-1;;;2791:78:30;;2467:65;;-1:-1:-1;2616:25:30;;;:32;;2588:25;;-1:-1:-1;;;;;2791:13:30;;:43;;:78;;2616:32;;2791:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2778:92;;;;;;;;;;2740:130;;2884:46;;:::i;:::-;2933:66;;-1:-1:-1;;;2933:66:30;;-1:-1:-1;;;;;2933:47:30;;;;;:66;;2981:17;;2933:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2884:115;-1:-1:-1;3119:16:30;3097:18;;;;;;;;:::i;:::-;:38;;;;;;;;;:84;;;;-1:-1:-1;3165:16:30;3139:22;:42;;;;;;;;;3097:84;3093:971;;;3213:268;;;;;;;;3249:24;:39;;;-1:-1:-1;;;;;3213:268:30;;;;;3310:24;:43;;;-1:-1:-1;;;;;3213:268:30;;;;;3383:9;-1:-1:-1;;;;;3213:268:30;;;;;3415:24;:48;;;-1:-1:-1;;;;;3213:268:30;;;;3201:280;;3093:971;;;3528:16;3506:18;;;;;;;;:::i;:::-;:38;;;;;;;;;:84;;;;-1:-1:-1;3574:16:30;3548:22;:42;;;;;;;;;3506:84;3502:562;;;3622:273;;;;;;;;3666:9;-1:-1:-1;;;;;3622:273:30;;;;;3698:24;:43;;;-1:-1:-1;;;;;3622:273:30;;;;;3763:24;:44;;;-1:-1:-1;;;;;3622:273:30;;;;;3829:24;:48;;;-1:-1:-1;;;;;3622:273:30;;;;3610:285;;3502:562;;;3996:53;;-1:-1:-1;;;3996:53:30;;;;;;;:::i;3502:562::-;4195:9;-1:-1:-1;;;;;4184:36:30;;4221:7;4230:5;4237:9;4184:63;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2131:2127;;;;4318:25;;:::i;:::-;4346:45;;-1:-1:-1;;;4346:45:30;;-1:-1:-1;;;;;4346:38:30;;;;;:45;;4385:5;;4346:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4318:73;;4474:13;;;;;;;;;-1:-1:-1;;;;;4474:13:30;-1:-1:-1;;;;;4453:50:30;;4517:7;4538:5;4557:12;4583:8;;4605:9;4628:6;4656:4;4675:5;4453:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4723:7;4706:100;4732:16;4750:9;:24;;;4776:9;:29;;;4706:100;;;;;;;;:::i;:::-;;;;;;;;1118:3695;;;;;;;;;;:::o;234:247:82:-;343:7;451:12;425:3;409:9;403:16;;;;;;;;395:25;;387:41;;:77;;234:247;-1:-1:-1;;;234:247:82:o;1599:2214:75:-;1800:7;1890:12;1877:9;:25;1873:47;;;-1:-1:-1;1911:9:75;1904:16;;1873:47;2003:25;1989:10;:39;;;;;;;;;:82;;;-1:-1:-1;2046:25:75;2032:10;:39;;;;;;;;;1989:82;1985:1795;;;2094:60;2134:9;2145:8;2094:39;:60::i;:::-;2087:67;;;;1985:1795;2372:26;2358:10;:40;;;;;;;;;:84;;;-1:-1:-1;2416:26:75;2402:10;:40;;;;;;;;;2358:84;2354:1426;;;2458:34;2495:60;2535:9;2546:8;2495:39;:60::i;:::-;2458:97;;2641:47;2678:9;2641:36;:47::i;:::-;2573:64;2610:26;2573:36;:64::i;:::-;:115;2569:187;;;2715:26;-1:-1:-1;2708:33:75;;2569:187;2776:61;2817:9;2828:8;2776:40;:61::i;:::-;2769:68;;;;;2354:1426;2928:25;2914:10;:39;;;;;;;;;:82;;;-1:-1:-1;2971:25:75;2957:10;:39;;;;;;;;;2914:82;2910:870;;;3019:61;3060:9;3071:8;3019:40;:61::i;2910:870::-;3301:26;3287:10;:40;;;;;;;;;:84;;;-1:-1:-1;3345:26:75;3331:10;:40;;;;;;;;;3287:84;3283:497;;;3387:35;3425:61;3466:9;3477:8;3425:40;:61::i;:::-;3387:99;;3573:47;3610:9;3573:36;:47::i;:::-;3504:65;3541:27;3504:36;:65::i;:::-;:116;3500:189;;;3647:27;-1:-1:-1;3640:34:75;;3500:189;3709:60;3749:9;3760:8;3709:39;:60::i;3283:497::-;-1:-1:-1;3797:9:75;1599:2214;;;;;;;:::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;648:583:75:-;848:7;902:25;888:10;:39;;;;;;;;;:95;;;-1:-1:-1;957:26:75;943:10;:40;;;;;;;;;888:95;:150;;;-1:-1:-1;1013:25:75;999:10;:39;;;;;;;;;888:150;:206;;;-1:-1:-1;1068:26:75;1054:10;:40;;;;;;;;;888:206;871:275;;;-1:-1:-1;1126:9:75;1119:16;;871:275;1163:61;1178:9;1189:10;1201:8;1211:12;1163:14;:61::i;:::-;1156:68;648:583;-1:-1:-1;;;;;648:583:75:o;5173:3272:4:-;5247:18;;:::i;:::-;5268:13;;:31;;-1:-1:-1;;;5268:31:4;;-1:-1:-1;;;;;5268:13:4;;;;:22;;:31;;5291:7;;5268:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5247:52;-1:-1:-1;5447:22:4;5418:25;;:51;;;;;;;;;:118;;;-1:-1:-1;5514:22:4;5485:25;;:51;;;;;;;;;5418:118;:185;;;-1:-1:-1;5581:22:4;5552:25;;:51;;;;;;;;;5418:185;5397:281;;;;-1:-1:-1;;;5397:281:4;;;;;;;:::i;:::-;5780:22;5751:25;;:51;;;;;;;;;5747:130;;5826:13;;:40;;-1:-1:-1;;;5826:40:4;;-1:-1:-1;;;;;5826:13:4;;;;:31;;:40;;5858:7;;5826:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5818:48;;5747:130;5888:19;5909:20;5933:19;5945:6;5933:11;:19::i;:::-;6242:13;;:77;;-1:-1:-1;;;6242:77:4;;5887:65;;-1:-1:-1;5887:65:4;;-1:-1:-1;6516:15:4;;6158:354;;5887:65;;-1:-1:-1;;;;;6242:13:4;;;;:43;;:77;;6286:7;;6242:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6220:100;;;;;;;;;;6347:13;;:64;;-1:-1:-1;;;6347:64:4;;-1:-1:-1;;;;;6347:13:4;;;;:43;;:64;;6391:7;;6347:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6338:74;;;;;;;;;;6430:13;;:68;;-1:-1:-1;;;6430:68:4;;-1:-1:-1;;;;;6430:13:4;;;;:43;;:68;;6474:7;;6430:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6158:354::-;:373;;6097:511;;;;-1:-1:-1;;;6097:511:4;;;;;;;:::i;:::-;6756:22;;:::i;:::-;6780:13;6797:53;6827:7;6836:5;6843:6;6797:29;:53::i;:::-;6755:95;;;;6902:18;6923:45;6944:7;6953:6;6961;6923:20;:45::i;:::-;6902:66;-1:-1:-1;6983:22:4;6979:974;;7405:22;7376:25;;:51;;;;;;;;;7372:137;;;7447:13;;:47;;-1:-1:-1;;;7447:47:4;;-1:-1:-1;;;;;7447:13:4;;;;:31;;:47;;7479:7;;7488:5;;7447:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7372:137;7589:13;;:47;;-1:-1:-1;;;7589:47:4;;-1:-1:-1;;;;;7589:13:4;;;;:30;;:47;;7620:7;;7629:6;;7589:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7685:15;7703:39;7715:12;7729;7703:11;:39::i;:::-;7685:57;;7884:58;7914:7;7923:9;7934:7;7884:29;:58::i;:::-;-1:-1:-1;7868:74:4;-1:-1:-1;;6979:974:4;8000:13;;:42;;-1:-1:-1;;;8000:42:4;;-1:-1:-1;;;;;8000:13:4;;;;:22;;:42;;8023:7;;8032:9;;8000:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;8090:21:4;;;8107:4;8090:21;8086:109;;;8127:13;;:57;;-1:-1:-1;;;8127:57:4;;-1:-1:-1;;;;;8127:13:4;;;;:32;;:57;;8160:7;;8169:6;;8177;;8127:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8086:109;8239:7;8210:228;8350:4;8333:21;;;;8332:50;;8370:12;8332:50;;;8358:9;8332:50;8396:12;8422:6;8210:228;;;;;;;;:::i;:::-;;;;;;;;5173:3272;;;;;;;;:::o;768:104:115:-;855:10;768:104;:::o;3980:550:75:-;4114:7;4153:11;4141:8;:23;;;;;;;;;4137:361;;;4184:51;4225:9;4184:40;:51::i;:::-;4239:1;4184:56;4180:308;;;4267:49;4303:9;4314:1;4267:35;:49::i;:::-;4260:56;;;;4180:308;4341:51;4382:9;4341:40;:51::i;:::-;4396:1;4341:56;4337:151;;;4424:49;4460:9;4471:1;4424:35;:49::i;4337:151::-;-1:-1:-1;4514:9:75;;3980:550;-1:-1:-1;3980:550:75:o;7219:138:106:-;7276:10;7310:40;1020:12;7322:9;:27;7310:11;:40::i;:::-;-1:-1:-1;7298:52:106;7219:138;-1:-1:-1;;;7219:138:106:o;4694:551:75:-;4829:7;4868:11;4856:8;:23;;;;;;;;;4852:361;;;4899:51;4940:9;4899:40;:51::i;:::-;4954:1;4899:56;4895:308;;;4982:49;5018:9;5029:1;4982:35;:49::i;4895:308::-;5056:51;5097:9;5056:40;:51::i;:::-;5111:1;5056:56;5052:151;;;5139:49;5175:9;5186:1;5139:35;:49::i;4819:1126:30:-;4975:12;;:::i;:::-;5028:13;;:32;;-1:-1:-1;;;5028:32:30;;4989:6;;;;-1:-1:-1;;;;;5028:13:30;;;;:23;;:32;;5052:7;;5028:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5011:49;;5070:21;;:::i;:::-;5115:13;;5094:54;;-1:-1:-1;;;5094:54:30;;-1:-1:-1;;;;;5115:13:30;;;;5094:45;;:54;;5140:7;;5094:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5070:78;;5159:19;5180:20;5204:19;5216:6;5204:11;:19::i;:::-;5158:65;;;;5234:13;5261:6;-1:-1:-1;;;;;5250:40:30;;5304:5;5323;5342:6;5362:197;5401:7;5426:9;5453:92;5467:12;5481:5;:27;;;5510:5;:14;;;5526:5;:18;;;5453:13;:92::i;:::-;5362:21;:197::i;:::-;5250:319;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5234:335;;5598:6;-1:-1:-1;;;;;5587:39:30;;5640:5;5659;5678:6;5698:197;5737:7;5762:9;5789:92;5803:12;5817:5;:27;;;5846:5;:14;;;5862:5;:18;;;5789:13;:92::i;:::-;5698:21;:197::i;:::-;5587:318;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5579:326;5931:6;;-1:-1:-1;4819:1126:30;-1:-1:-1;;;;;;;;4819:1126:30:o;8839:2407:4:-;8981:4;9022:21;;;;;:45;;-1:-1:-1;9047:20:4;;;9022:45;9001:151;;;;-1:-1:-1;;;9001:151:4;;;;;;;:::i;:::-;9211:11;9207:28;;-1:-1:-1;9231:4:4;9224:11;;9207:28;9364:13;;:67;;-1:-1:-1;;;9364:67:4;;9348:13;;-1:-1:-1;;;;;9364:13:4;;:46;;:67;;9411:7;;9364:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9348:83;;9441:44;;:::i;:::-;9488:13;;:122;;-1:-1:-1;;;9488:122:4;;-1:-1:-1;;;;;9488:13:4;;;;:56;;:122;;9558:7;;9488:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9441:169;-1:-1:-1;9652:26:4;9624:19;:24;;;:54;;;;;;;;;9620:147;;;9729:26;;9706:50;;:22;:50::i;:::-;-1:-1:-1;9694:62:4;-1:-1:-1;9620:147:4;9777:31;;:::i;:::-;9811:13;;:35;;-1:-1:-1;;;9811:35:4;;-1:-1:-1;;;;;9811:13:4;;;;:26;;:35;;9838:7;;9811:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9777:69;;9948:13;9971;10007:1;9998:6;:10;9994:674;;;-1:-1:-1;10096:29:4;;;;-1:-1:-1;;;;;10236:19:4;;10232:94;;10283:9;:28;;;10275:36;;10232:94;9994:674;;;-1:-1:-1;10428:24:4;;-1:-1:-1;;;;;10563:19:4;;10559:99;;10610:9;:33;;;10602:41;;10559:99;10727:14;10754:1;10745:6;:10;10744:53;;10785:6;-1:-1:-1;;10785:11:4;10744:53;;;10767:6;10744:53;10727:70;;10970:6;10929:5;-1:-1:-1;;;;;10922:23:4;;10946:5;10961:4;10922:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;:97;;;-1:-1:-1;10980:30:4;;-1:-1:-1;;;10980:30:4;;11013:6;;-1:-1:-1;;;;;10980:23:4;;;;;:30;;11004:5;;10980:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:39;10922:97;10918:196;;;11047:7;11040:37;;;;;;:::i;:::-;;;;;;;;11098:5;11091:12;;;;;;;;;;10918:196;11191:48;;-1:-1:-1;;;11191:48:4;;-1:-1:-1;;;;;11191:26:4;;;;;:48;;11218:5;;11225;;11232:6;;11191:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11184:55;;;;;;;;8839:2407;;;;;;:::o;6898:175:106:-;7061:1;1020:12;6998:27;;;7056:1;7048:9;7047:15;7065:1;7047:19;;6898:175::o;9033:198::-;1020:12;9157:23;;9145:35;;9198:25;;;;9190:34;;;;;3309:605;3365:9;;;3425:5;3450:31;;;3365:9;3507:6;3499:1;:5;;:14;;-1:-1:-1;3550:1:106;3545;3532:6;:10;;:14;3531:20;3527:24;;;;3561:9;3590:7;3573:4;3585:1;3581:5;;3573:14;:24;;-1:-1:-1;3630:1:106;3615:4;:12;;:16;3611:1;:20;3634:2;3611:25;3607:29;;3646:10;3668:4;3664:1;3659:2;:6;:13;;;;;;;-1:-1:-1;3682:8:106;3713:2;3697:4;:13;;:18;3693:22;;;-1:-1:-1;3738:2:106;3729:6;:11;-1:-1:-1;;3803:6:106;;;;3796:3;:14;:22;;;;:26;;;3768:1;3772:2;:6;;;3759:19;;;;;;;;-1:-1:-1;3729:11:106;-1:-1:-1;3796:26:106;-1:-1:-1;;;;3309:605:106:o;10938:198::-;1020:12;11062:23;;11050:35;;11103:25;;;;11095:34;;;;;15178:713:4;15391:13;;:67;;-1:-1:-1;;;15391:67:4;;15349:7;;;;-1:-1:-1;;;;;15391:13:4;;;;:46;;:67;;15438:7;;15391:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15497:13;;:77;;-1:-1:-1;;;15497:77:4;;15372:86;;-1:-1:-1;15468:26:4;;-1:-1:-1;;;;;15497:13:4;;;;:46;;:77;;15544:7;;15497:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15468:106;;15601:18;-1:-1:-1;;;;;15589:30:4;:8;-1:-1:-1;;;;;15589:30:4;;15585:300;;15692:12;;15745:40;;15663:13;;;;-1:-1:-1;;;;;15692:12:4;;;;:25;;15745:40;;15756:8;;15766:18;;15745:40;;;:::i;:::-;;;;;;;;;;;;;15735:51;;;;;;15804:9;15692:135;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15662:165;;;;15845:5;15841:33;;;-1:-1:-1;15867:6:4;-1:-1:-1;15852:22:4;;-1:-1:-1;;15852:22:4;15841:33;15585:300;;;15178:713;;;;;;;:::o;11609:3425::-;11774:7;11814:12;11801:9;:25;;;;;;;;;11797:3203;;;11917:12;;;11960:13;:84;;-1:-1:-1;;;11960:84:4;;11885:16;;;;-1:-1:-1;;;;;11917:12:4;;;;:25;;11960:13;;;;:46;;:84;;12007:7;;11960:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12062:9;11917:168;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11884:201;;;;12103:5;12099:36;;;-1:-1:-1;12125:9:4;-1:-1:-1;12110:25:4;;12099:36;11797:3203;;;;;12169:12;12156:9;:25;;;;;;;;;12152:2848;;;-1:-1:-1;12289:15:4;12274:31;;12152:2848;12339:12;12326:9;:25;;;;;;;;;12322:2678;;;12438:44;;:::i;:::-;12485:13;;:134;;-1:-1:-1;;;12485:134:4;;-1:-1:-1;;;;;12485:13:4;;;;:56;;:134;;12559:7;;12485:134;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12438:181;-1:-1:-1;12665:26:4;12637:19;:24;;;:54;;;;;;;;;12633:639;;;12739:26;;12836:27;;;;12913:66;;-1:-1:-1;;;12913:66:4;;-1:-1:-1;;;;;12913:47:4;;;;;:66;;12739:26;;12913:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:74;;12983:4;12913:74;12884:198;;;;-1:-1:-1;;;12884:198:4;;;;;;;:::i;:::-;13136:103;;-1:-1:-1;;;13136:103:4;;-1:-1:-1;;;;;13136:63:4;;;;;:103;;13200:17;;13136:103;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13107:150;-1:-1:-1;13100:157:4;;-1:-1:-1;;;13100:157:4;12633:639;13285:44;;:::i;:::-;13332:13;;:134;;-1:-1:-1;;;13332:134:4;;-1:-1:-1;;;;;13332:13:4;;;;:56;;:134;;13406:7;;13332:134;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13285:181;-1:-1:-1;13530:25:4;13501:19;:25;;;:54;;;;;;;;;:127;;;;-1:-1:-1;13603:25:4;13575:19;:24;;;:53;;;;;;;;;13501:127;13480:403;;;13693:12;;13740:26;;13693:122;;-1:-1:-1;;;13693:122:4;;13662:15;;;;-1:-1:-1;;;;;13693:12:4;;;;:25;;:122;;13788:9;;13693:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13661:154;;;;13837:5;13833:35;;;-1:-1:-1;13859:8:4;-1:-1:-1;13844:24:4;;-1:-1:-1;;13844:24:4;13833:35;13480:403;;12322:2678;;;;;13916:13;13903:9;:26;;;;;;;;;13899:1101;;;13945:44;;:::i;:::-;13992:13;;:134;;-1:-1:-1;;;13992:134:4;;-1:-1:-1;;;;;13992:13:4;;;;:56;;:134;;14066:7;;13992:134;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13945:181;-1:-1:-1;14190:25:4;14161:19;:25;;;:54;;;;;;;;;:127;;;;-1:-1:-1;14263:25:4;14235:19;:24;;;:53;;;;;;;;;14161:127;14140:819;;;14385:12;;14432:26;;14385:122;;-1:-1:-1;;;14385:122:4;;14322:35;;;;-1:-1:-1;;;;;14385:12:4;;;;:25;;:122;;14480:9;;14385:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14585:12;;14632:26;;14585:12;14680:13;:65;;-1:-1:-1;;;14680:65:4;;14321:186;;-1:-1:-1;14321:186:4;;-1:-1:-1;14526:33:4;;;;-1:-1:-1;;;;;14585:12:4;;;;:25;;14632:26;14680:13;;;:43;;:65;;14724:7;;14680:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14585:178;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14525:238;;;;14785:17;:36;;;;;14806:15;14785:36;14781:164;;;14860:65;:28;14898:26;14860:65;:37;:65;:::i;:::-;14852:74;-1:-1:-1;14845:81:4;;-1:-1:-1;;;;;14845:81:4;14781:164;14140:819;;;;;-1:-1:-1;14987:1:4;;-1:-1:-1;14972:17:4;;13899:1101;-1:-1:-1;15025:1:4;11609:3425;;;;;:::o;1146:600:80:-;1231:6;1261;1253:55;;;;-1:-1:-1;;;1253:55:80;;;;;;;:::i;:::-;1372:6;1368:20;;-1:-1:-1;1387:1:80;1380:8;;1368:20;353:15;1409:25;;;;:1;:25;:1;1452:5;;;;;:30;1444:81;;;;-1:-1:-1;;;1444:81:80;;;;;;;:::i;:::-;1546:1;-1:-1:-1;;1546:7:80;:26;;;;;-1:-1:-1;;;1557:1:80;:15;1546:26;1544:29;1536:80;;;;-1:-1:-1;;;1536:80:80;;;;;;;:::i;:::-;1626:8;1641:1;1637;:5;;;;;;;-1:-1:-1;1660:6:80;1652:68;;;;-1:-1:-1;;;1652:68:80;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:130;72:20;;97:33;72:20;97:33;:::i;1265:188::-;1370:13;;1388:60;1370:13;1388:60;:::i;1625:162::-;1717:13;;1735:47;1717:13;1735:47;:::i;1981:184::-;2084:13;;2102:58;2084:13;2102:58;:::i;3117:170::-;3213:13;;3231:51;3213:13;3231:51;:::i;3294:166::-;3379:20;;3404:51;3379:20;3404:51;:::i;3467:170::-;3563:13;;3581:51;3563:13;3581:51;:::i;9290:881::-;;9426:4;9414:9;9409:3;9405:19;9401:30;9398:2;;;-1:-1;;9434:12;9398:2;9462:20;9426:4;9462:20;:::i;:::-;9453:29;;1017:6;1011:13;9548:16;9541:86;9691:2;9760:9;9756:22;1011:13;9691:2;9710:5;9706:16;9699:86;9847:2;9943:9;9939:22;2468:13;2486:60;2540:5;2486:60;:::i;:::-;9847:2;9862:16;;9855:113;10029:2;10121:22;;2468:13;2486:60;2468:13;2486:60;:::i;:::-;10029:2;10044:16;;10037:113;10048:5;9392:779;-1:-1;;9392:779::o;14206:241::-;;14310:2;14298:9;14289:7;14285:23;14281:32;14278:2;;;-1:-1;;14316:12;14278:2;85:6;72:20;97:33;124:5;97:33;:::i;14454:263::-;;14569:2;14557:9;14548:7;14544:23;14540:32;14537:2;;;-1:-1;;14575:12;14537:2;226:6;220:13;238:33;265:5;238:33;:::i;14724:366::-;;;14845:2;14833:9;14824:7;14820:23;14816:32;14813:2;;;-1:-1;;14851:12;14813:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;14903:63;15003:2;15042:22;;;;13858:20;;-1:-1;;;14807:283::o;15097:257::-;;15209:2;15197:9;15188:7;15184:23;15180:32;15177:2;;;-1:-1;;15215:12;15177:2;742:6;736:13;754:30;778:5;754:30;:::i;15361:241::-;;15465:2;15453:9;15444:7;15440:23;15436:32;15433:2;;;-1:-1;;15471:12;15433:2;-1:-1;863:20;;15427:175;-1:-1;15427:175::o;15609:263::-;;15724:2;15712:9;15703:7;15699:23;15695:32;15692:2;;;-1:-1;;15730:12;15692:2;-1:-1;1011:13;;15686:186;-1:-1;15686:186::o;15879:366::-;;;16000:2;15988:9;15979:7;15975:23;15971:32;15968:2;;;-1:-1;;16006:12;15968:2;-1:-1;;863:20;;;16158:2;16197:22;;;863:20;;-1:-1;15962:283::o;16252:295::-;;16383:2;16371:9;16362:7;16358:23;16354:32;16351:2;;;-1:-1;;16389:12;16351:2;2279:6;2266:20;2291:60;2345:5;2291:60;:::i;16554:277::-;;16676:2;16664:9;16655:7;16651:23;16647:32;16644:2;;;-1:-1;;16682:12;16644:2;3042:6;3029:20;3054:51;3099:5;3054:51;:::i;16838:299::-;;16971:2;16959:9;16950:7;16946:23;16942:32;16939:2;;;-1:-1;;16977:12;16939:2;3569:6;3563:13;3581:51;3626:5;3581:51;:::i;17144:271::-;;17263:2;17251:9;17242:7;17238:23;17234:32;17231:2;;;-1:-1;;17269:12;17231:2;4495:6;4482:20;4507:48;4549:5;4507:48;:::i;17422:396::-;;;17558:2;17546:9;17537:7;17533:23;17529:32;17526:2;;;-1:-1;;17564:12;17526:2;4495:6;4482:20;4507:48;4549:5;4507:48;:::i;18093:391::-;;;18221:2;18209:9;18200:7;18196:23;18192:32;18189:2;;;-1:-1;;18227:12;18189:2;5119:6;5113:13;18279:73;;18389:2;18440:9;18436:22;736:13;754:30;778:5;754:30;:::i;:::-;18397:71;;;;18183:301;;;;;:::o;18491:328::-;;18638:3;18626:9;18617:7;18613:23;18609:33;18606:2;;;-1:-1;;18645:12;18606:2;5371:20;18638:3;5371:20;:::i;:::-;226:6;220:13;238:33;265:5;238:33;:::i;:::-;5458:86;;5619:2;5684:22;;220:13;238:33;220:13;238:33;:::i;:::-;5619:2;5634:16;;5627:86;5789:2;5854:22;;220:13;238:33;220:13;238:33;:::i;:::-;5789:2;5804:16;;5797:86;5963:2;6028:22;;220:13;238:33;220:13;238:33;:::i;:::-;5963:2;5978:16;;5971:86;5982:5;18600:219;-1:-1;;;18600:219::o;18826:1086::-;;;;;;;;19067:9;19058:7;19054:23;19079:3;19054:23;19050:33;19047:2;;;-1:-1;;19086:12;19047:2;6222:3;;6204:16;6200:26;6197:2;;;-1:-1;;6229:12;6197:2;19138:92;;-1:-1;19280:19;;19267:33;;-1:-1;19320:18;19309:30;;;19306:2;;;-1:-1;;19342:12;19306:2;19443:6;19432:9;19428: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;;19320:18;501:6;498:30;495:2;;;-1:-1;;531:12;495:2;626:3;575:4;;610:6;606:17;567:6;592:32;;589:41;586:2;;;-1:-1;;633:12;586:2;575:4;563:17;;-1:-1;19362:98;;-1:-1;19516:53;;-1:-1;19561:7;19497:3;19537:22;;19516:53;:::i;:::-;19506:63;;19625:53;19670:7;19606:3;19650:9;19646:22;19625:53;:::i;:::-;19615:63;;19734:53;19779:7;19715:3;19759:9;19755:22;19734:53;:::i;:::-;19724:63;;19843:53;19888:7;19824:3;19868:9;19864:22;19843:53;:::i;:::-;19833:63;;19041:871;;;;;;;;;;:::o;19919:318::-;;20061:3;20049:9;20040:7;20036:23;20032:33;20029:2;;;-1:-1;;20068:12;20029:2;6464:22;6479:6;6464:22;:::i;:::-;6576:78;6650:3;6626:22;6576:78;:::i;:::-;6558:16;6551:104;6753:74;6823:3;6720:2;6803:9;6799:22;6753:74;:::i;:::-;6720:2;6739:5;6735:16;6728:100;6930:78;7004:3;6897:2;6984:9;6980:22;6930:78;:::i;:::-;6897:2;6916:5;6912:16;6905:104;7117:84;7197:3;7084:2;7177:9;7173:22;7117:84;:::i;:::-;7084:2;7103:5;7099:16;7092:110;7314:87;7397:3;7280;7377:9;7373:22;7314:87;:::i;:::-;7280:3;7300:5;7296:16;7289:113;7513:86;7595:3;7479;7575:9;7571:22;7513:86;:::i;:::-;7479:3;7499:5;7495:16;7488:112;7713:85;7794:3;7679;7774:9;7770:22;7713:85;:::i;:::-;7679:3;7699:5;7695:16;7688:111;7898:74;7968:3;7864;7948:9;7944:22;7898:74;:::i;:::-;7864:3;7880:16;;7873:100;8040:3;8108:22;;;14006:13;8056:18;;;8049:88;8206:3;8274:22;;;14006:13;8222:18;;;8215:88;8377:3;8444:22;;;5113:13;8393:18;;;8386:87;8537:3;8604:22;;;5113:13;8553:18;;;8546:87;8717:3;8784:22;;;5113:13;8733:18;;;8726:87;8889:3;8925:96;9017:3;8993:22;;;8925:96;:::i;:::-;8905:18;;;8898:124;9134:96;9226:3;9098;9202:22;;9134:96;:::i;:::-;9125:6;9114:18;;9107:124;9118:5;20023:214;-1:-1;;;20023:214::o;20244:336::-;;20395:3;20383:9;20374:7;20370:23;20366:33;20363:2;;;-1:-1;;20402:12;20363:2;20464:100;20556:7;20532:22;20464:100;:::i;20587:312::-;;20726:3;;20714:9;20705:7;20701:23;20697:33;20694:2;;;-1:-1;;20733:12;20694:2;10359:22;20726:3;10359:22;:::i;:::-;10478:85;10559:3;10535:22;10478:85;:::i;:::-;10453:111;;10631:2;10696:22;;;14006:13;10646:16;;;10639:86;10799:2;10864:22;;;14006:13;10814:16;;;10807:86;10962:2;11027:22;;;14006:13;10977:16;;;10970:86;11125:3;11191:22;;;14006:13;11141:16;;;11134:86;11292:3;11358:22;;;14006:13;11308:16;;;11301:86;11457:3;11523:22;;;14006:13;11473:16;;;11466:86;11626:3;11691:22;;;5113:13;11642:16;;;11635:85;11792:3;11859:22;;;5113:13;11808:18;;;11801:87;11955:3;12022:22;;;5113:13;11971:18;;;11964:87;12127:3;12194:22;;;5113:13;12143:18;;;12136:87;12305:3;12372:22;;;5113:13;12321:18;;;12314:87;12483:3;12550:22;;;5113:13;12499:18;;;12492:87;12666:3;12733:22;;;5113:13;12682:18;;;12675:87;12833:3;12900:22;;;5113:13;12849:18;;;12842:87;13002:3;13069:22;;;5113:13;13018:18;;;13011:87;13163:3;13230:22;;;5113:13;13179:18;;;13172:87;13333:3;13400:22;;;5113:13;13349:18;;;13342:87;13498:3;13565:22;;;5113:13;13514:18;;;13507:87;13667:3;13734:22;;;5113:13;13683:18;;;13676:87;;;;-1:-1;10460:16;;20688:211;-1:-1;;20688:211::o;21176:699::-;;;;;21372:3;21360:9;21351:7;21347:23;21343:33;21340:2;;;-1:-1;;21379:12;21340:2;13871:6;13858:20;21431:63;;21531:2;21601:9;21597:22;1168:20;1193:60;1247:5;1193:60;:::i;:::-;21539:90;-1:-1;21666:2;21719:22;;1541:20;1566:47;1541:20;1566:47;:::i;:::-;21334:541;;;;-1:-1;21674:77;;21788:2;21827:22;13858:20;;-1:-1;;21334:541::o;21882:259::-;;21995:2;21983:9;21974:7;21970:23;21966:32;21963:2;;;-1:-1;;22001:12;21963:2;14151:6;14145:13;77458:4;83702:5;77447:16;83679:5;83676:33;83666:2;;-1:-1;;83713:12;23619:166;80438:1;80431:5;80428:12;80418:2;;80444:9;80418:2;23705:75;;23699:86::o;23792:140::-;80550:1;80543:5;80540:12;80530:2;;80556:9;23939:162;80673:1;80666:5;80663:12;80653:2;;80679:9;24454:148;81039:2;81032:5;81029:13;81019:2;;81046:9;24609:148;81156:2;81149:5;81146:13;81136:2;;81163:9;35429:856;35662:23;;-1:-1;;;;;77242:54;;;22358:37;;35847:4;35836:16;;;35830:23;77242:54;;35907:14;;;22358:37;36016:4;36005:16;;;35999:23;77242:54;;36076:14;;;22358:37;36189:4;36178:16;;;36172:23;77242:54;36249:14;;22358:37;35559:726::o;36333:3622::-;74206:2;36609:16;74197:12;36632:79;36696:14;74153:57;74197:12;36609:16;74153:57;:::i;:::-;36632:79;:::i;:::-;36777:64;36824:16;36817:5;36777:64;:::i;:::-;36847:75;74206:2;36911:3;36907:14;36893:12;36847:75;:::i;:::-;;;36992:68;37054:4;37047:5;37043:16;37036:5;36992:68;:::i;:::-;37066:79;37054:4;37134:3;37130:14;37116:12;37066:79;:::i;:::-;;37221:74;37289:4;37282:5;37278:16;37271:5;37221:74;:::i;:::-;37301:85;37289:4;37375:3;37371:14;37357:12;37301:85;:::i;:::-;;37465:77;37536:4;37529:5;37525:16;37518:5;37465:77;:::i;:::-;37548:88;37536:4;37625:3;37621:14;37607:12;37548:88;:::i;:::-;;37714:76;37784:4;37777:5;37773:16;37766:5;37714:76;:::i;:::-;37796:87;37784:4;37872:3;37868:14;37854:12;37796:87;:::i;:::-;;37963:75;38032:4;38025:5;38021:16;38014:5;37963:75;:::i;:::-;38044:86;38032:4;38119:3;38115:14;38101:12;38044:86;:::i;:::-;;38196:64;38254:4;38247:5;38243:16;38236:5;38196:64;:::i;:::-;38266:75;38254:4;38330:3;38326:14;38312:12;38266:75;:::i;:::-;-1:-1;38453:6;38442:18;;;13858:20;38515:16;;;23094:37;38646:6;38635:18;;;13858:20;38708:16;;;23094:37;38843:6;38832:18;;;4967:20;38903:16;;;23094:37;39028:6;39017:18;;;4967:20;39088:16;;;23094:37;39233:6;39222:18;;;4967:20;39293:16;;;23094:37;39469:6;39483:139;39605:16;;;39458:18;;;39483:139;:::i;:::-;;39781:6;39795:139;39781:6;39921:3;39917:16;39781:6;39774:5;39770:18;39795:139;:::i;:::-;;36455:3500;;:::o;43041:1016::-;876:6;863:20;23101:3;23094:37;72998:2;43299:16;72989:12;863:20;72998:2;43558:3;43554:14;23094:37;72989:12;43299:16;72989:12;2266:20;2291:60;2345:5;2291:60;:::i;:::-;75955;76009:5;75955:60;:::i;:::-;72989:12;43788:14;;24367:75;73869:12;;;2266:20;2291:60;2266:20;2291:60;:::i;:::-;75955;76009:5;75955:60;:::i;:::-;78807:51;73869:12;44025:3;44021:14;24194:75;;43171:886;;:::o;44123:852::-;44352:16;44346:23;23101:3;23094:37;44520:4;44513:5;44509:16;44503:23;44520:4;44584:3;44580:14;23094:37;44675:4;44668:5;44664:16;44658:23;75955:60;76009:5;75955:60;:::i;:::-;44675:4;44760:14;;24367:75;44854:4;44843:16;;44837:23;75955:60;44837:23;75955:60;:::i;45017:3535::-;45270:86;45341:14;45247:16;45241:23;45270:86;:::i;:::-;45441:4;45430:16;;;45424:23;45501:14;;;23094:37;45608:4;45597:16;;;45591:23;45668:14;;;23094:37;45770:4;45759:16;;;45753:23;45830:14;;;23094:37;45932:4;45921:16;;;45915:23;45992:14;;;23094:37;46097:4;46086:16;;;46080:23;46157:14;;;23094:37;46260:4;46249:16;;;46243:23;46320:14;;;23094:37;46427:4;46416:16;;;46410:23;46485:14;;;23094:37;46590:6;46579:18;;;46573:25;46650:16;;;23094:37;46752:6;46741:18;;;46735:25;46812:16;;;23094:37;46923:6;46912:18;;;46906:25;46983:16;;;23094:37;47100:6;47089:18;;;47083:25;47160:16;;;23094:37;47277:6;47266:18;;;47260:25;47337:16;;;23094:37;47459:6;47448:18;;;47442:25;47519:16;;;23094:37;47625:6;47614:18;;;47608:25;47685:16;;;23094:37;47793:6;47782:18;;;47776:25;47853:16;;;23094:37;47953:6;47942:18;;;47936:25;48013:16;;;23094:37;48122:6;48111:18;;;48105:25;48182:16;;;23094:37;48286:6;48275:18;;;48269:25;48346:16;;;23094:37;48454:6;48443:18;;;48437:25;48514:16;;23094:37;45131:3421::o;48789:222::-;-1:-1;;;;;77242:54;;;;22358:37;;48916:2;48901:18;;48887:124::o;49018:333::-;-1:-1;;;;;77242:54;;;22358:37;;77242:54;;49337:2;49322:18;;22358:37;49173:2;49158:18;;49144:207::o;49358:444::-;-1:-1;;;;;77242:54;;;22358:37;;77242:54;;;;49705:2;49690:18;;22358:37;49788:2;49773:18;;23094:37;;;;49541:2;49526:18;;49512:290::o;49809:333::-;-1:-1;;;;;77242:54;;;;22358:37;;50128:2;50113:18;;23094:37;49964:2;49949:18;;49935:207::o;50149:222::-;23094:37;;;50276:2;50261:18;;50247:124::o;50378:349::-;23094:37;;;-1:-1;;;;;77242:54;50713:2;50698:18;;22227:58;50541:2;50526:18;;50512:215::o;50734:333::-;23094:37;;;51053:2;51038:18;;23094:37;50889:2;50874:18;;50860:207::o;51074:440::-;23094:37;;;51419:2;51404:18;;23094:37;;;;51500:2;51485:18;;23094:37;51255:2;51240:18;;51226:288::o;51521:459::-;23094:37;;;-1:-1;;;51966:2;51951:18;;25934:34;51739:2;51724:18;;51710:270::o;51987:459::-;23094:37;;;-1:-1;;;52432:2;52417:18;;27294:27;52205:2;52190:18;;52176:270::o;52453:459::-;23094:37;;;-1:-1;;;52898:2;52883:18;;28035:23;52671:2;52656:18;;52642:270::o;52919:459::-;23094:37;;;-1:-1;;;53364:2;53349:18;;29399:24;53137:2;53122:18;;53108:270::o;53385:459::-;23094:37;;;29586:27;53830:2;53815:18;;29574:40;53603:2;53588:18;;53574:270::o;53851:459::-;23094:37;;;-1:-1;;;54296:2;54281:18;;29765:33;54069:2;54054:18;;54040:270::o;54317:459::-;23094:37;;;-1:-1;;;54762:2;54747:18;;31511:36;54535:2;54520:18;;54506:270::o;54783:459::-;23094:37;;;-1:-1;;;55228:2;55213:18;;32444:27;55001:2;54986:18;;54972:270::o;55249:459::-;23094:37;;;-1:-1;;;55694:2;55679:18;;34194:32;55467:2;55452:18;;55438:270::o;55715:459::-;23094:37;;;-1:-1;;;56160:2;56145:18;;34377:23;55933:2;55918:18;;55904:270::o;56181:459::-;23094:37;;;-1:-1;;;56626:2;56611:18;;35328:34;56399:2;56384:18;;56370:270::o;56647:686::-;23094:37;;;56950:3;56935:19;;57047:128;57171:2;57156:18;;57147:6;57047:128;:::i;:::-;57186:137;57318:3;57307:9;57303:19;57294:6;57186:137;:::i;57340:1516::-;;57891:4;23124:5;23101:3;23094:37;57989:128;58113:2;58102:9;58098:18;58089:6;57989:128;:::i;:::-;58128:121;58244:3;58233:9;58229:19;58220:6;58128:121;:::i;:::-;58282:4;58267:20;;58260:50;;;57876:20;;72648:19;;;72688:14;-1:-1;;;;;22806:78;;22803:2;;;-1:-1;;22887:12;22803:2;58113;22922:6;22918:17;80270:6;80265:3;72688:14;57880:9;72688:14;80247:30;80308:16;;;80301:27;;;58453:138;58585:4;58570:20;;58561:6;58453:138;:::i;:::-;-1:-1;;;;;77242:54;;;58670:4;58655:20;;22358:37;77242:54;;;58755:4;58740:20;;22358:37;77242:54;;58840:4;58825:20;;;22358:37;;;;57862:994;;-1:-1;;;;;;57862:994::o;58863:430::-;23094:37;;;59066:3;59051:19;;59163:120;59279:2;59264:18;;59255:6;59163:120;:::i;60188:476::-;60387:2;60372:18;;81156:2;81146:13;;81136:2;;81163:9;81136:2;24686:66;;;-1:-1;;;;;77242:54;;;60567:2;60552:18;;22358:37;77242:54;;60650:2;60635:18;;;22358:37;60358:306;:::o;60671:359::-;60839:2;60824:18;;81516:2;81506:13;;81496:2;;81523:9;81496:2;25351:63;;;61016:2;61001:18;23094:37;60810:220;:::o;61037:466::-;61231:2;61216:18;;81516:2;81506:13;;81496:2;;81523:9;81496:2;25351:63;;;61408:2;61393:18;;23094:37;;;;61489:2;61474:18;;;23094:37;61202:301;:::o;61510:416::-;61710:2;61724:47;;;26207:2;61695:18;;;72648:19;26243:34;72688:14;;;26223:55;26312:26;26298:12;;;26291:48;26358:12;;;61681:245::o;61933:416::-;62133:2;62147:47;;;26609:2;62118:18;;;72648:19;26645:34;72688:14;;;26625:55;-1:-1;;;26700:12;;;26693:35;26747:12;;;62104:245::o;62356:416::-;62556:2;62570:47;;;26998:2;62541:18;;;72648:19;27034:34;72688:14;;;27014:55;-1:-1;;;27089:12;;;27082:30;27131:12;;;62527:245::o;62779:348::-;-1:-1;;;27472:33;;62969:2;62954:18;;62940:187::o;63134:416::-;63334:2;63348:47;;;27744:2;63319:18;;;72648:19;27780:34;72688:14;;;27760:55;-1:-1;;;27835:12;;;27828:25;27872:12;;;63305:245::o;63557:416::-;63757:2;63771:47;;;28297:2;63742:18;;;72648:19;28333:34;72688:14;;;28313:55;-1:-1;;;28388:12;;;28381:35;28435:12;;;63728:245::o;63980:416::-;64180:2;64194:47;;;28686:2;64165:18;;;72648:19;28722:34;72688:14;;;28702:55;28791:26;28777:12;;;28770:48;28837:12;;;64151:245::o;64403:416::-;64603:2;64617:47;;;29088:2;64588:18;;;72648:19;29124:34;72688:14;;;29104:55;-1:-1;;;29179:12;;;29172:45;29236:12;;;64574:245::o;64826:416::-;65026:2;65040:47;;;30037:2;65011:18;;;72648:19;30073:34;72688:14;;;30053:55;-1:-1;;;30128:12;;;30121:38;30178:12;;;64997:245::o;65249:416::-;65449:2;65463:47;;;30429:2;65434:18;;;72648:19;30465:34;72688:14;;;30445:55;-1:-1;;;30520:12;;;30513:35;30567:12;;;65420:245::o;65672:416::-;65872:2;65886:47;;;30818:2;65857:18;;;72648:19;30854:34;72688:14;;;30834:55;-1:-1;;;30909:12;;;30902:32;30953:12;;;65843:245::o;66095:416::-;66295:2;66309:47;;;31204:2;66280:18;;;72648:19;31240:34;72688:14;;;31220:55;-1:-1;;;31295:12;;;31288:41;31348:12;;;66266:245::o;66518:416::-;66718:2;66732:47;;;31786:2;66703:18;;;72648:19;31822:34;72688:14;;;31802:55;31891:29;31877:12;;;31870:51;31940:12;;;66689:245::o;66941:416::-;67141:2;67155:47;;;67126:18;;;72648:19;32227:34;72688:14;;;32207:55;32281:12;;;67112:245::o;67364:416::-;67564:2;67578:47;;;32710:2;67549:18;;;72648:19;32746:34;72688:14;;;32726:55;-1:-1;;;32801:12;;;32794:30;32843:12;;;67535:245::o;67787:416::-;67987:2;68001:47;;;33094:2;67972:18;;;72648:19;33130:34;72688:14;;;33110:55;-1:-1;;;33185:12;;;33178:43;33240:12;;;67958:245::o;68210:416::-;68410:2;68424:47;;;33491:2;68395:18;;;72648:19;33527:34;72688:14;;;33507:55;-1:-1;;;33582:12;;;33575:35;33629:12;;;68381:245::o;68633:416::-;68833:2;68847:47;;;33880:2;68818:18;;;72648:19;33916:34;72688:14;;;33896:55;33985:26;33971:12;;;33964:48;34031:12;;;68804:245::o;69056:416::-;69256:2;69270:47;;;34639:2;69241:18;;;72648:19;34675:34;72688:14;;;34655:55;-1:-1;;;34730:12;;;34723:41;34783:12;;;69227:245::o;69479:416::-;69679:2;69693:47;;;35034:2;69664:18;;;72648:19;35070:34;72688:14;;;35050:55;-1:-1;;;35125:12;;;35118:28;35165:12;;;69650:245::o;69902:335::-;70085:3;70070:19;;70100:127;70074:9;70200:6;70100:127;:::i;70244:559::-;70483:3;70468:19;;70498:127;70472:9;70598:6;70498:127;:::i;:::-;-1:-1;;;;;77242:54;;;;70704:3;70689:19;;22358:37;70788:3;70773:19;23094:37;70454:349;;-1:-1;70454:349::o;70810:447::-;71021:3;71006:19;;71036:127;71010:9;71136:6;71036:127;:::i;:::-;23124:5;71242:3;71231:9;71227:19;23094:37;70992:265;;;;;:::o;71264:766::-;;71577:4;71566:9;71562:20;71554:28;;40255:79;40319:14;40232:16;40226:23;40255:79;:::i;:::-;40417:4;40410:5;40406:16;40400:23;40429:75;40417:4;40493:3;40489:14;40475:12;40429:75;:::i;:::-;;40591:4;40584:5;40580:16;40574:23;40603:79;40591:4;40671:3;40667:14;40653:12;40603:79;:::i;:::-;;40775:4;40768:5;40764:16;40758:23;40787:85;40775:4;40861:3;40857:14;40843:12;40787:85;:::i;:::-;;40968:4;40961:5;40957:16;40951:23;40980:88;40968:4;41057:3;41053:14;41039:12;40980:88;:::i;:::-;;41163:4;41156:5;41152:16;41146:23;41175:87;41163:4;41251:3;41247:14;41233:12;41175:87;:::i;:::-;;41359:4;41352:5;41348:16;41342:23;41371:86;41359:4;41446:3;41442:14;41428:12;41371:86;:::i;:::-;;41540:4;41533:5;41529:16;41523:23;41552:75;41540:4;41616:3;41612:14;41598:12;41552:75;:::i;:::-;-1:-1;41712:6;41701:18;;;41695:25;41774:16;;;23094:37;41878:6;41867:18;;;41861:25;41940:16;;;23094:37;42049:6;42038:18;;;42032:25;42109:16;;;23094:37;42208:6;42197:18;;;42191:25;42268:16;;;23094:37;42387:6;42376:18;;;42370:25;42447:16;;;23094:37;42558:6;42547:18;;;42541:25;42572:137;42692:16;;;42541:25;42572:137;:::i;:::-;;;42803:6;42796:5;42792:18;42786:25;42817:137;42946:6;42941:3;42937:16;42923:12;42817:137;:::i;:::-;;71729:121;71845:3;71834:9;71830:19;71821:6;71729:121;:::i;:::-;71929:4;71914:20;;23094:37;;;;72014:4;71999:20;23094:37;71548:482;;-1:-1;;71548:482::o;72266:256::-;72328:2;72322:9;72354:17;;;72429:18;72414:34;;72450:22;;;72411:62;72408:2;;;72486:1;;72476:12;72408:2;72328;72495:22;72306:216;;-1:-1;72306:216::o;73017:173::-;;1181:6;1168:20;1193:60;1247:5;1193:60;:::i;73199:147::-;;1554:6;1541:20;1566:47;1607:5;1566:47;:::i;73355:169::-;;1899:6;1886:20;1911:58;1963:5;1911:58;:::i;73897:155::-;;3042:6;3029:20;3054:51;3099:5;3054:51;:::i;80702:118::-;80798:1;80791:5;80788:12;80778:2;;80804:9;80778:2;80772:48;:::o;81658:117::-;-1:-1;;;;;77242:54;;81717:35;;81707:2;;81766:1;;81756:12;81782:111;81863:5;75284:13;75277:21;81841:5;81838:32;81828:2;;81884:1;;81874:12;82024:121;82120:1;82113:5;82110:12;82100:2;;82136:1;;82126:12;82152:108;82235:1;82228:5;82225:12;82215:2;;82251:1;;82241:12;82267:119;82361:1;82354:5;82351:12;82341:2;;82377:1;;82367:12;82393:121;82489:1;82482:5;82479:12;82469:2;;82505:1;;82495:12;82649:113;82736:2;82729:5;82726:13;82716:2;;82753:1;;82743:12;82769:113;82856:2;82849:5;82846:13;82836:2;;82873:1;;82863:12;83141:110;83225:2;83218:5;83215:13;83205:2;;83242:1;;83232:12",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"@atpar/actus-solidity/contracts/Engines/CEC/ICECEngine.sol\";\n\nimport \"../Base/AssetActor/BaseActor.sol\";\nimport \"../Base/Custodian/ICustodian.sol\";\nimport \"./ICECRegistry.sol\";\n\n\n/**\n * @title CECActor\n * @notice TODO\n */\ncontract CECActor is BaseActor {\n\n\n    constructor(IAssetRegistry assetRegistry, IDataRegistry dataRegistry)\n        public\n        BaseActor(assetRegistry, dataRegistry)\n    {}\n\n    /**\n     * @notice Derives initial state of the asset terms and stores together with\n     * terms, schedule, ownership, engine, admin of the asset in the contract types specific AssetRegistry.\n     * @param terms asset specific terms\n     * @param schedule schedule of the asset\n     * @param engine address of the ACTUS engine used for the spec. ContractType\n     * @param admin address of the admin of the asset (optional)\n     * @param custodian address of the custodian of the collateral\n     * @param underlyingRegistry address of the asset registry where the underlying asset is stored\n     */\n    function initialize(\n        CECTerms calldata terms,\n        bytes32[] calldata schedule,\n        address engine,\n        address admin,\n        address custodian,\n        address underlyingRegistry\n    )\n        external\n    {\n        require(\n            engine != address(0) && IEngine(engine).contractType() == ContractType.CEC,\n            \"ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED\"\n        );\n\n        // solium-disable-next-line\n        bytes32 assetId = keccak256(abi.encode(terms, block.timestamp));\n        AssetOwnership memory ownership;\n\n        // check if first contract reference in terms references an underlying asset\n        if (terms.contractReference_1.role == ContractReferenceRole.COVE) {\n            require(\n                terms.contractReference_1.object != bytes32(0),\n                \"CECActor.initialize: INVALID_CONTRACT_REFERENCE_1_OBJECT\"\n            );\n        }\n\n        // check if second contract reference in terms contains a reference to collateral\n        if (terms.contractReference_2.role == ContractReferenceRole.COVI) {\n            require(\n                terms.contractReference_2.object != bytes32(0),\n                \"CECActor.initialize: INVALID_CONTRACT_REFERENCE_2_OBJECT\"\n            );\n\n            // derive assetId\n            // solium-disable-next-line\n            assetId = keccak256(abi.encode(terms, address(custodian), block.timestamp));\n\n            // derive underlying assetId\n            bytes32 underlyingAssetId = terms.contractReference_1.object;\n            // get contract role and ownership of referenced underlying asset\n            ContractRole underlyingContractRole = ContractRole(assetRegistry.getEnumValueForTermsAttribute(underlyingAssetId, \"contractRole\"));\n            AssetOwnership memory underlyingAssetOwnership = IAssetRegistry(underlyingRegistry).getOwnership(underlyingAssetId);\n\n            // set ownership of draft according to contract role of underlying\n            if (terms.contractRole == ContractRole.BUY && underlyingContractRole == ContractRole.RPA) {\n                ownership = AssetOwnership(\n                    underlyingAssetOwnership.creatorObligor,\n                    underlyingAssetOwnership.creatorBeneficiary,\n                    address(custodian),\n                    underlyingAssetOwnership.counterpartyBeneficiary\n                );\n            } else if (terms.contractRole == ContractRole.SEL && underlyingContractRole == ContractRole.RPL) {\n                ownership = AssetOwnership(\n                    address(custodian),\n                    underlyingAssetOwnership.creatorBeneficiary,\n                    underlyingAssetOwnership.counterpartyObligor,\n                    underlyingAssetOwnership.counterpartyBeneficiary\n                );\n            } else {\n                // only BUY, RPA and SEL, RPL allowed for CEC\n                revert(\"CECActor.initialize: INVALID_CONTRACT_ROLES\");\n            }\n\n            // execute contractual conditions\n            // try transferring collateral to the custodian\n            ICustodian(custodian).lockCollateral(assetId, terms, ownership);\n        }\n\n        // compute the initial state of the asset\n        State memory initialState = ICECEngine(engine).computeInitialState(terms);\n\n        // register the asset in the AssetRegistry\n        ICECRegistry(address(assetRegistry)).registerAsset(\n            assetId,\n            terms,\n            initialState,\n            schedule,\n            ownership,\n            engine,\n            address(this),\n            admin\n        );\n\n        emit InitializedAsset(assetId, ContractType.CEC, ownership.creatorObligor, ownership.counterpartyObligor);\n    }\n\n    function computeStateAndPayoffForEvent(bytes32 assetId, State memory state, bytes32 _event)\n        internal\n        view\n        override\n        returns (State memory, int256)\n    {\n        address engine = assetRegistry.getEngine(assetId);\n        CECTerms memory terms = ICECRegistry(address(assetRegistry)).getTerms(assetId);\n        (EventType eventType, uint256 scheduleTime) = decodeEvent(_event);\n\n        int256 payoff = ICECEngine(engine).computePayoffForEvent(\n            terms,\n            state,\n            _event,\n            getExternalDataForPOF(\n                assetId,\n                eventType,\n                shiftCalcTime(scheduleTime, terms.businessDayConvention, terms.calendar, terms.maturityDate)\n            )\n        );\n        state = ICECEngine(engine).computeStateForEvent(\n            terms,\n            state,\n            _event,\n            getExternalDataForSTF(\n                assetId,\n                eventType,\n                shiftCalcTime(scheduleTime, terms.businessDayConvention, terms.calendar, terms.maturityDate)\n            )\n        );\n\n        return (state, payoff);\n    }\n}",
  "sourcePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEC/CECActor.sol",
  "ast": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEC/CECActor.sol",
    "exportedSymbols": {
      "CECActor": [
        8219
      ]
    },
    "id": 8220,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7866,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:30"
      },
      {
        "id": 7867,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:30"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/CEC/ICECEngine.sol",
        "file": "@atpar/actus-solidity/contracts/Engines/CEC/ICECEngine.sol",
        "id": 7868,
        "nodeType": "ImportDirective",
        "scope": 8220,
        "sourceUnit": 29018,
        "src": "101:68:30",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetActor/BaseActor.sol",
        "file": "../Base/AssetActor/BaseActor.sol",
        "id": 7869,
        "nodeType": "ImportDirective",
        "scope": 8220,
        "sourceUnit": 3852,
        "src": "171:42:30",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/Custodian/ICustodian.sol",
        "file": "../Base/Custodian/ICustodian.sol",
        "id": 7870,
        "nodeType": "ImportDirective",
        "scope": 8220,
        "sourceUnit": 7476,
        "src": "214:42:30",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEC/ICECRegistry.sol",
        "file": "./ICECRegistry.sol",
        "id": 7871,
        "nodeType": "ImportDirective",
        "scope": 8220,
        "sourceUnit": 9479,
        "src": "257:28:30",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7873,
              "name": "BaseActor",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3851,
              "src": "352:9:30",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseActor_$3851",
                "typeString": "contract BaseActor"
              }
            },
            "id": 7874,
            "nodeType": "InheritanceSpecifier",
            "src": "352:9:30"
          }
        ],
        "contractDependencies": [
          3851,
          3868,
          7055,
          23277,
          24758,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 7872,
          "nodeType": "StructuredDocumentation",
          "src": "288:42:30",
          "text": " @title CECActor\n @notice TODO"
        },
        "fullyImplemented": true,
        "id": 8219,
        "linearizedBaseContracts": [
          8219,
          3851,
          38485,
          38376,
          3868,
          23277,
          24758,
          7055
        ],
        "name": "CECActor",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 7885,
              "nodeType": "Block",
              "src": "506:2:30",
              "statements": []
            },
            "documentation": null,
            "id": 7886,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7881,
                    "name": "assetRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7876,
                    "src": "473:13:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 7882,
                    "name": "dataRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7878,
                    "src": "488:12:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  }
                ],
                "id": 7883,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7880,
                  "name": "BaseActor",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3851,
                  "src": "463:9:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseActor_$3851_$",
                    "typeString": "type(contract BaseActor)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "463:38:30"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7879,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7876,
                  "mutability": "mutable",
                  "name": "assetRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7886,
                  "src": "382:28:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                    "typeString": "contract IAssetRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7875,
                    "name": "IAssetRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4500,
                    "src": "382:14:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7878,
                  "mutability": "mutable",
                  "name": "dataRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7886,
                  "src": "412:26:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                    "typeString": "contract IDataRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7877,
                    "name": "IDataRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7766,
                    "src": "412:13:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "381:58:30"
            },
            "returnParameters": {
              "id": 7884,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "506:0:30"
            },
            "scope": 8219,
            "src": "370:138:30",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8123,
              "nodeType": "Block",
              "src": "1345:3468:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 7918,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 7909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7904,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7894,
                            "src": "1376:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7907,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1394:1:30",
                                "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": 7906,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1386:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 7905,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1386:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 7908,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1386:10:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1376:20:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ContractType_$22559",
                            "typeString": "enum ContractType"
                          },
                          "id": 7917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7911,
                                    "name": "engine",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7894,
                                    "src": "1408:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 7910,
                                  "name": "IEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32432,
                                  "src": "1400:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IEngine_$32432_$",
                                    "typeString": "type(contract IEngine)"
                                  }
                                },
                                "id": 7912,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1400:15:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IEngine_$32432",
                                  "typeString": "contract IEngine"
                                }
                              },
                              "id": 7913,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "contractType",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32431,
                              "src": "1400:28:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$__$returns$_t_enum$_ContractType_$22559_$",
                                "typeString": "function () pure external returns (enum ContractType)"
                              }
                            },
                            "id": 7914,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1400:30:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractType_$22559",
                              "typeString": "enum ContractType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7915,
                              "name": "ContractType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22559,
                              "src": "1434:12:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                                "typeString": "type(enum ContractType)"
                              }
                            },
                            "id": 7916,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "CEC",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1434:16:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractType_$22559",
                              "typeString": "enum ContractType"
                            }
                          },
                          "src": "1400:50:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1376:74:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414e4e4163746f722e696e697469616c697a653a20434f4e54524143545f545950455f4f465f454e47494e455f554e535550504f52544544",
                        "id": 7919,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1464:58:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_123f2ddb69b620f39925260df1d2897b486c610d154d10f9bd3fa9b554741bce",
                          "typeString": "literal_string \"ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED\""
                        },
                        "value": "ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_123f2ddb69b620f39925260df1d2897b486c610d154d10f9bd3fa9b554741bce",
                          "typeString": "literal_string \"ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED\""
                        }
                      ],
                      "id": 7903,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1355:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7920,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1355:177:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7921,
                  "nodeType": "ExpressionStatement",
                  "src": "1355:177:30"
                },
                {
                  "assignments": [
                    7923
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7923,
                      "mutability": "mutable",
                      "name": "assetId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8123,
                      "src": "1579:15:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7922,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1579:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7932,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7927,
                            "name": "terms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7889,
                            "src": "1618:5:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                              "typeString": "struct CECTerms calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7928,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "1625:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 7929,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1625:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                              "typeString": "struct CECTerms calldata"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7925,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1607:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 7926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1607:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 7930,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1607:34:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 7924,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1597:9:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 7931,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1597:45:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1579:63:30"
                },
                {
                  "assignments": [
                    7934
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7934,
                      "mutability": "mutable",
                      "name": "ownership",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8123,
                      "src": "1652:31:30",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                        "typeString": "struct AssetOwnership"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7933,
                        "name": "AssetOwnership",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7849,
                        "src": "1652:14:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                          "typeString": "struct AssetOwnership"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7935,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1652:31:30"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                      "typeString": "enum ContractReferenceRole"
                    },
                    "id": 7941,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7936,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7889,
                          "src": "1783:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                            "typeString": "struct CECTerms calldata"
                          }
                        },
                        "id": 7937,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "contractReference_1",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22796,
                        "src": "1783:25:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ContractReference_$22632_calldata_ptr",
                          "typeString": "struct ContractReference calldata"
                        }
                      },
                      "id": 7938,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "role",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22631,
                      "src": "1783:30:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                        "typeString": "enum ContractReferenceRole"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7939,
                        "name": "ContractReferenceRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22525,
                        "src": "1817:21:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractReferenceRole_$22525_$",
                          "typeString": "type(enum ContractReferenceRole)"
                        }
                      },
                      "id": 7940,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "COVE",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1817:26:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                        "typeString": "enum ContractReferenceRole"
                      }
                    },
                    "src": "1783:60:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7955,
                  "nodeType": "IfStatement",
                  "src": "1779:252:30",
                  "trueBody": {
                    "id": 7954,
                    "nodeType": "Block",
                    "src": "1845:186:30",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 7950,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7943,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7889,
                                    "src": "1884:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                                      "typeString": "struct CECTerms calldata"
                                    }
                                  },
                                  "id": 7944,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "contractReference_1",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22796,
                                  "src": "1884:25:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ContractReference_$22632_calldata_ptr",
                                    "typeString": "struct ContractReference calldata"
                                  }
                                },
                                "id": 7945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "object",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22625,
                                "src": "1884:32:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 7948,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1928:1:30",
                                    "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": 7947,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1920:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 7946,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1920:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 7949,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1920:10:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "1884:46:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4345434163746f722e696e697469616c697a653a20494e56414c49445f434f4e54524143545f5245464552454e43455f315f4f424a454354",
                              "id": 7951,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1948:58:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_44ba041197d7c664073421ce5949cff1fddd0ad2c9b47b11ef85c24a599c5fca",
                                "typeString": "literal_string \"CECActor.initialize: INVALID_CONTRACT_REFERENCE_1_OBJECT\""
                              },
                              "value": "CECActor.initialize: INVALID_CONTRACT_REFERENCE_1_OBJECT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_44ba041197d7c664073421ce5949cff1fddd0ad2c9b47b11ef85c24a599c5fca",
                                "typeString": "literal_string \"CECActor.initialize: INVALID_CONTRACT_REFERENCE_1_OBJECT\""
                              }
                            ],
                            "id": 7942,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1859:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1859:161:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7953,
                        "nodeType": "ExpressionStatement",
                        "src": "1859:161:30"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                      "typeString": "enum ContractReferenceRole"
                    },
                    "id": 7961,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7956,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7889,
                          "src": "2135:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                            "typeString": "struct CECTerms calldata"
                          }
                        },
                        "id": 7957,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "contractReference_2",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22798,
                        "src": "2135:25:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ContractReference_$22632_calldata_ptr",
                          "typeString": "struct ContractReference calldata"
                        }
                      },
                      "id": 7958,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "role",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22631,
                      "src": "2135:30:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                        "typeString": "enum ContractReferenceRole"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7959,
                        "name": "ContractReferenceRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22525,
                        "src": "2169:21:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractReferenceRole_$22525_$",
                          "typeString": "type(enum ContractReferenceRole)"
                        }
                      },
                      "id": 7960,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "COVI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2169:26:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                        "typeString": "enum ContractReferenceRole"
                      }
                    },
                    "src": "2135:60:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8083,
                  "nodeType": "IfStatement",
                  "src": "2131:2127:30",
                  "trueBody": {
                    "id": 8082,
                    "nodeType": "Block",
                    "src": "2197:2061:30",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 7970,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7963,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7889,
                                    "src": "2236:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                                      "typeString": "struct CECTerms calldata"
                                    }
                                  },
                                  "id": 7964,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "contractReference_2",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22798,
                                  "src": "2236:25:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ContractReference_$22632_calldata_ptr",
                                    "typeString": "struct ContractReference calldata"
                                  }
                                },
                                "id": 7965,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "object",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22625,
                                "src": "2236:32:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 7968,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2280:1:30",
                                    "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": 7967,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2272:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 7966,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2272:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 7969,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2272:10:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "2236:46:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4345434163746f722e696e697469616c697a653a20494e56414c49445f434f4e54524143545f5245464552454e43455f325f4f424a454354",
                              "id": 7971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2300:58:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e277e6b6ba6c1c82e8f48630173758333f2be9b5ae2e16bc40a0615dbcd5297f",
                                "typeString": "literal_string \"CECActor.initialize: INVALID_CONTRACT_REFERENCE_2_OBJECT\""
                              },
                              "value": "CECActor.initialize: INVALID_CONTRACT_REFERENCE_2_OBJECT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e277e6b6ba6c1c82e8f48630173758333f2be9b5ae2e16bc40a0615dbcd5297f",
                                "typeString": "literal_string \"CECActor.initialize: INVALID_CONTRACT_REFERENCE_2_OBJECT\""
                              }
                            ],
                            "id": 7962,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2211:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2211:161:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7973,
                        "nodeType": "ExpressionStatement",
                        "src": "2211:161:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7987,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7974,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7923,
                            "src": "2457:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7978,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7889,
                                    "src": "2488:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                                      "typeString": "struct CECTerms calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 7981,
                                        "name": "custodian",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7898,
                                        "src": "2503:9:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 7980,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2495:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 7979,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2495:7:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 7982,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2495:18:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7983,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "2515:5:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 7984,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "2515:15:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                                      "typeString": "struct CECTerms calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7976,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "2477:3:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 7977,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2477:10:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 7985,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2477:54:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 7975,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "2467:9:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 7986,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2467:65:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2457:75:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 7988,
                        "nodeType": "ExpressionStatement",
                        "src": "2457:75:30"
                      },
                      {
                        "assignments": [
                          7990
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7990,
                            "mutability": "mutable",
                            "name": "underlyingAssetId",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8082,
                            "src": "2588:25:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 7989,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2588:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7994,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7991,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7889,
                              "src": "2616:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                                "typeString": "struct CECTerms calldata"
                              }
                            },
                            "id": 7992,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "contractReference_1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22796,
                            "src": "2616:25:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ContractReference_$22632_calldata_ptr",
                              "typeString": "struct ContractReference calldata"
                            }
                          },
                          "id": 7993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "object",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22625,
                          "src": "2616:32:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2588:60:30"
                      },
                      {
                        "assignments": [
                          7996
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7996,
                            "mutability": "mutable",
                            "name": "underlyingContractRole",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8082,
                            "src": "2740:35:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7995,
                              "name": "ContractRole",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 22539,
                              "src": "2740:12:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractRole_$22539",
                                "typeString": "enum ContractRole"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8004,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8000,
                                  "name": "underlyingAssetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7990,
                                  "src": "2835:17:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "636f6e7472616374526f6c65",
                                  "id": 8001,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2854:14:30",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_25827de09a431c20bbdc36b82f2598bebb6f799c13d479cbb6f07f3bb9ca40e8",
                                    "typeString": "literal_string \"contractRole\""
                                  },
                                  "value": "contractRole"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_25827de09a431c20bbdc36b82f2598bebb6f799c13d479cbb6f07f3bb9ca40e8",
                                    "typeString": "literal_string \"contractRole\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7998,
                                  "name": "assetRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3025,
                                  "src": "2791:13:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                    "typeString": "contract IAssetRegistry"
                                  }
                                },
                                "id": 7999,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getEnumValueForTermsAttribute",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6830,
                                "src": "2791:43:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint8_$",
                                  "typeString": "function (bytes32,bytes32) view external returns (uint8)"
                                }
                              },
                              "id": 8002,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2791:78:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 7997,
                            "name": "ContractRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22539,
                            "src": "2778:12:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ContractRole_$22539_$",
                              "typeString": "type(enum ContractRole)"
                            }
                          },
                          "id": 8003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2778:92:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ContractRole_$22539",
                            "typeString": "enum ContractRole"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2740:130:30"
                      },
                      {
                        "assignments": [
                          8006
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8006,
                            "mutability": "mutable",
                            "name": "underlyingAssetOwnership",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8082,
                            "src": "2884:46:30",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                              "typeString": "struct AssetOwnership"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 8005,
                              "name": "AssetOwnership",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 7849,
                              "src": "2884:14:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                                "typeString": "struct AssetOwnership"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8013,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8011,
                              "name": "underlyingAssetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7990,
                              "src": "2981:17:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8008,
                                  "name": "underlyingRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7900,
                                  "src": "2948:18:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 8007,
                                "name": "IAssetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4500,
                                "src": "2933:14:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IAssetRegistry_$4500_$",
                                  "typeString": "type(contract IAssetRegistry)"
                                }
                              },
                              "id": 8009,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2933:34:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                "typeString": "contract IAssetRegistry"
                              }
                            },
                            "id": 8010,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getOwnership",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4578,
                            "src": "2933:47:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_AssetOwnership_$7849_memory_ptr_$",
                              "typeString": "function (bytes32) view external returns (struct AssetOwnership memory)"
                            }
                          },
                          "id": 8012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2933:66:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                            "typeString": "struct AssetOwnership memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2884:115:30"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 8023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            },
                            "id": 8018,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8014,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7889,
                                "src": "3097:5:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                                  "typeString": "struct CECTerms calldata"
                                }
                              },
                              "id": 8015,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "contractRole",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22774,
                              "src": "3097:18:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractRole_$22539",
                                "typeString": "enum ContractRole"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8016,
                                "name": "ContractRole",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22539,
                                "src": "3119:12:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ContractRole_$22539_$",
                                  "typeString": "type(enum ContractRole)"
                                }
                              },
                              "id": 8017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "BUY",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3119:16:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractRole_$22539",
                                "typeString": "enum ContractRole"
                              }
                            },
                            "src": "3097:38:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            },
                            "id": 8022,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 8019,
                              "name": "underlyingContractRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7996,
                              "src": "3139:22:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractRole_$22539",
                                "typeString": "enum ContractRole"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8020,
                                "name": "ContractRole",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22539,
                                "src": "3165:12:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ContractRole_$22539_$",
                                  "typeString": "type(enum ContractRole)"
                                }
                              },
                              "id": 8021,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "RPA",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3165:16:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractRole_$22539",
                                "typeString": "enum ContractRole"
                              }
                            },
                            "src": "3139:42:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3097:84:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 8049,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ContractRole_$22539",
                                "typeString": "enum ContractRole"
                              },
                              "id": 8044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8040,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7889,
                                  "src": "3506:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                                    "typeString": "struct CECTerms calldata"
                                  }
                                },
                                "id": 8041,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "contractRole",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22774,
                                "src": "3506:18:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractRole_$22539",
                                  "typeString": "enum ContractRole"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8042,
                                  "name": "ContractRole",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22539,
                                  "src": "3528:12:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ContractRole_$22539_$",
                                    "typeString": "type(enum ContractRole)"
                                  }
                                },
                                "id": 8043,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "SEL",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3528:16:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractRole_$22539",
                                  "typeString": "enum ContractRole"
                                }
                              },
                              "src": "3506:38:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ContractRole_$22539",
                                "typeString": "enum ContractRole"
                              },
                              "id": 8048,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 8045,
                                "name": "underlyingContractRole",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7996,
                                "src": "3548:22:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractRole_$22539",
                                  "typeString": "enum ContractRole"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8046,
                                  "name": "ContractRole",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22539,
                                  "src": "3574:12:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ContractRole_$22539_$",
                                    "typeString": "type(enum ContractRole)"
                                  }
                                },
                                "id": 8047,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "RPL",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3574:16:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractRole_$22539",
                                  "typeString": "enum ContractRole"
                                }
                              },
                              "src": "3548:42:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "3506:84:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 8070,
                            "nodeType": "Block",
                            "src": "3916:148:30",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "4345434163746f722e696e697469616c697a653a20494e56414c49445f434f4e54524143545f524f4c4553",
                                      "id": 8067,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4003:45:30",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_415dd7c108e57ce82db0a6e9c3e684d4e63f82ebe62c12298e114ff5aace6d89",
                                        "typeString": "literal_string \"CECActor.initialize: INVALID_CONTRACT_ROLES\""
                                      },
                                      "value": "CECActor.initialize: INVALID_CONTRACT_ROLES"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_415dd7c108e57ce82db0a6e9c3e684d4e63f82ebe62c12298e114ff5aace6d89",
                                        "typeString": "literal_string \"CECActor.initialize: INVALID_CONTRACT_ROLES\""
                                      }
                                    ],
                                    "id": 8066,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "3996:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 8068,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3996:53:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 8069,
                                "nodeType": "ExpressionStatement",
                                "src": "3996:53:30"
                              }
                            ]
                          },
                          "id": 8071,
                          "nodeType": "IfStatement",
                          "src": "3502:562:30",
                          "trueBody": {
                            "id": 8065,
                            "nodeType": "Block",
                            "src": "3592:318:30",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8063,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 8050,
                                    "name": "ownership",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7934,
                                    "src": "3610:9:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                      "typeString": "struct AssetOwnership memory"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 8054,
                                            "name": "custodian",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7898,
                                            "src": "3666:9:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 8053,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "3658:7:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 8052,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3658:7:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 8055,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3658:18:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 8056,
                                          "name": "underlyingAssetOwnership",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8006,
                                          "src": "3698:24:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                            "typeString": "struct AssetOwnership memory"
                                          }
                                        },
                                        "id": 8057,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "creatorBeneficiary",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7844,
                                        "src": "3698:43:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 8058,
                                          "name": "underlyingAssetOwnership",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8006,
                                          "src": "3763:24:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                            "typeString": "struct AssetOwnership memory"
                                          }
                                        },
                                        "id": 8059,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "counterpartyObligor",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7846,
                                        "src": "3763:44:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 8060,
                                          "name": "underlyingAssetOwnership",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8006,
                                          "src": "3829:24:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                            "typeString": "struct AssetOwnership memory"
                                          }
                                        },
                                        "id": 8061,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "counterpartyBeneficiary",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7848,
                                        "src": "3829:48:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 8051,
                                      "name": "AssetOwnership",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7849,
                                      "src": "3622:14:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_struct$_AssetOwnership_$7849_storage_ptr_$",
                                        "typeString": "type(struct AssetOwnership storage pointer)"
                                      }
                                    },
                                    "id": 8062,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "structConstructorCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3622:273:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                      "typeString": "struct AssetOwnership memory"
                                    }
                                  },
                                  "src": "3610:285:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                    "typeString": "struct AssetOwnership memory"
                                  }
                                },
                                "id": 8064,
                                "nodeType": "ExpressionStatement",
                                "src": "3610:285:30"
                              }
                            ]
                          }
                        },
                        "id": 8072,
                        "nodeType": "IfStatement",
                        "src": "3093:971:30",
                        "trueBody": {
                          "id": 8039,
                          "nodeType": "Block",
                          "src": "3183:313:30",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8037,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 8024,
                                  "name": "ownership",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7934,
                                  "src": "3201:9:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                    "typeString": "struct AssetOwnership memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8026,
                                        "name": "underlyingAssetOwnership",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8006,
                                        "src": "3249:24:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                          "typeString": "struct AssetOwnership memory"
                                        }
                                      },
                                      "id": 8027,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "creatorObligor",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7842,
                                      "src": "3249:39:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8028,
                                        "name": "underlyingAssetOwnership",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8006,
                                        "src": "3310:24:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                          "typeString": "struct AssetOwnership memory"
                                        }
                                      },
                                      "id": 8029,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "creatorBeneficiary",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7844,
                                      "src": "3310:43:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 8032,
                                          "name": "custodian",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7898,
                                          "src": "3383:9:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 8031,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3375:7:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 8030,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3375:7:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 8033,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3375:18:30",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8034,
                                        "name": "underlyingAssetOwnership",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8006,
                                        "src": "3415:24:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                          "typeString": "struct AssetOwnership memory"
                                        }
                                      },
                                      "id": 8035,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "counterpartyBeneficiary",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7848,
                                      "src": "3415:48:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 8025,
                                    "name": "AssetOwnership",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7849,
                                    "src": "3213:14:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_AssetOwnership_$7849_storage_ptr_$",
                                      "typeString": "type(struct AssetOwnership storage pointer)"
                                    }
                                  },
                                  "id": 8036,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3213:268:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                    "typeString": "struct AssetOwnership memory"
                                  }
                                },
                                "src": "3201:280:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                  "typeString": "struct AssetOwnership memory"
                                }
                              },
                              "id": 8038,
                              "nodeType": "ExpressionStatement",
                              "src": "3201:280:30"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8077,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7923,
                              "src": "4221:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8078,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7889,
                              "src": "4230:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                                "typeString": "struct CECTerms calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8079,
                              "name": "ownership",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7934,
                              "src": "4237:9:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                "typeString": "struct AssetOwnership memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                                "typeString": "struct CECTerms calldata"
                              },
                              {
                                "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                "typeString": "struct AssetOwnership memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8074,
                                  "name": "custodian",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7898,
                                  "src": "4195:9:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 8073,
                                "name": "ICustodian",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7475,
                                "src": "4184:10:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ICustodian_$7475_$",
                                  "typeString": "type(contract ICustodian)"
                                }
                              },
                              "id": 8075,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4184:21:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ICustodian_$7475",
                                "typeString": "contract ICustodian"
                              }
                            },
                            "id": 8076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lockCollateral",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7467,
                            "src": "4184:36:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_struct$_CECTerms_$22799_memory_ptr_$_t_struct$_AssetOwnership_$7849_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (bytes32,struct CECTerms memory,struct AssetOwnership memory) external returns (bool)"
                            }
                          },
                          "id": 8080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4184:63:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8081,
                        "nodeType": "ExpressionStatement",
                        "src": "4184:63:30"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    8085
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8085,
                      "mutability": "mutable",
                      "name": "initialState",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8123,
                      "src": "4318:25:30",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 8084,
                        "name": "State",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22673,
                        "src": "4318:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                          "typeString": "struct State"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8092,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8090,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7889,
                        "src": "4385:5:30",
                        "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,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8087,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7894,
                            "src": "4357:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 8086,
                          "name": "ICECEngine",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 29017,
                          "src": "4346:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ICECEngine_$29017_$",
                            "typeString": "type(contract ICECEngine)"
                          }
                        },
                        "id": 8088,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4346:18:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ICECEngine_$29017",
                          "typeString": "contract ICECEngine"
                        }
                      },
                      "id": 8089,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "computeInitialState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28932,
                      "src": "4346:38:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_struct$_CECTerms_$22799_memory_ptr_$returns$_t_struct$_State_$22673_memory_ptr_$",
                        "typeString": "function (struct CECTerms memory) pure external returns (struct State memory)"
                      }
                    },
                    "id": 8091,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4346:45:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4318:73:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8100,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7923,
                        "src": "4517:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8101,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7889,
                        "src": "4538:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                          "typeString": "struct CECTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8102,
                        "name": "initialState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8085,
                        "src": "4557:12:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8103,
                        "name": "schedule",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7892,
                        "src": "4583:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8104,
                        "name": "ownership",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7934,
                        "src": "4605:9:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                          "typeString": "struct AssetOwnership memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8105,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7894,
                        "src": "4628:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8108,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "4656:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_CECActor_$8219",
                              "typeString": "contract CECActor"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_CECActor_$8219",
                              "typeString": "contract CECActor"
                            }
                          ],
                          "id": 8107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4648:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 8106,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4648:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 8109,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4648:13:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8110,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7896,
                        "src": "4675:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                          "typeString": "struct CECTerms calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                          "typeString": "struct AssetOwnership memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8096,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3025,
                                "src": "4474:13:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              ],
                              "id": 8095,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4466:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 8094,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4466:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 8097,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4466:22:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 8093,
                          "name": "ICECRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9478,
                          "src": "4453:12:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ICECRegistry_$9478_$",
                            "typeString": "type(contract ICECRegistry)"
                          }
                        },
                        "id": 8098,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4453:36:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ICECRegistry_$9478",
                          "typeString": "contract ICECRegistry"
                        }
                      },
                      "id": 8099,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "registerAsset",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9463,
                      "src": "4453:50:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_struct$_CECTerms_$22799_memory_ptr_$_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 CECTerms memory,struct State memory,bytes32[] memory,struct AssetOwnership memory,address,address,address) external"
                      }
                    },
                    "id": 8111,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4453:237:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8112,
                  "nodeType": "ExpressionStatement",
                  "src": "4453:237:30"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8114,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7923,
                        "src": "4723:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 8115,
                          "name": "ContractType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22559,
                          "src": "4732:12:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                            "typeString": "type(enum ContractType)"
                          }
                        },
                        "id": 8116,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "CEC",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4732:16:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ContractType_$22559",
                          "typeString": "enum ContractType"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 8117,
                          "name": "ownership",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7934,
                          "src": "4750:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                            "typeString": "struct AssetOwnership memory"
                          }
                        },
                        "id": 8118,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creatorObligor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7842,
                        "src": "4750:24:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 8119,
                          "name": "ownership",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7934,
                          "src": "4776:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                            "typeString": "struct AssetOwnership memory"
                          }
                        },
                        "id": 8120,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "counterpartyObligor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7846,
                        "src": "4776:29:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_enum$_ContractType_$22559",
                          "typeString": "enum ContractType"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8113,
                      "name": "InitializedAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3007,
                      "src": "4706:16:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_enum$_ContractType_$22559_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,enum ContractType,address,address)"
                      }
                    },
                    "id": 8121,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4706:100:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8122,
                  "nodeType": "EmitStatement",
                  "src": "4701:105:30"
                }
              ]
            },
            "documentation": {
              "id": 7887,
              "nodeType": "StructuredDocumentation",
              "src": "514:599:30",
              "text": " @notice Derives initial state of the asset terms and stores together with\n terms, schedule, ownership, engine, admin of the asset in the contract types specific AssetRegistry.\n @param terms asset specific terms\n @param schedule schedule of the asset\n @param engine address of the ACTUS engine used for the spec. ContractType\n @param admin address of the admin of the asset (optional)\n @param custodian address of the custodian of the collateral\n @param underlyingRegistry address of the asset registry where the underlying asset is stored"
            },
            "functionSelector": "d56a1ddf",
            "id": 8124,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7901,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7889,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8124,
                  "src": "1147:23:30",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                    "typeString": "struct CECTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7888,
                    "name": "CECTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22799,
                    "src": "1147:8:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CECTerms_$22799_storage_ptr",
                      "typeString": "struct CECTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7892,
                  "mutability": "mutable",
                  "name": "schedule",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8124,
                  "src": "1180:27:30",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7890,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1180:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 7891,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1180:9:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7894,
                  "mutability": "mutable",
                  "name": "engine",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8124,
                  "src": "1217:14:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7893,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1217:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7896,
                  "mutability": "mutable",
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8124,
                  "src": "1241:13:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7895,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1241:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7898,
                  "mutability": "mutable",
                  "name": "custodian",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8124,
                  "src": "1264:17:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7897,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1264:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7900,
                  "mutability": "mutable",
                  "name": "underlyingRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8124,
                  "src": "1291:26:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7899,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1291:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1137:186:30"
            },
            "returnParameters": {
              "id": 7902,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1345:0:30"
            },
            "scope": 8219,
            "src": "1118:3695:30",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3563
            ],
            "body": {
              "id": 8217,
              "nodeType": "Block",
              "src": "5001:944:30",
              "statements": [
                {
                  "assignments": [
                    8139
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8139,
                      "mutability": "mutable",
                      "name": "engine",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8217,
                      "src": "5011:14:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8138,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5011:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8144,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8142,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8126,
                        "src": "5052:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8140,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "5028:13:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 8141,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getEngine",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4517,
                      "src": "5028:23:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 8143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5028:32:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5011:49:30"
                },
                {
                  "assignments": [
                    8146
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8146,
                      "mutability": "mutable",
                      "name": "terms",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8217,
                      "src": "5070:21:30",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                        "typeString": "struct CECTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 8145,
                        "name": "CECTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22799,
                        "src": "5070:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CECTerms_$22799_storage_ptr",
                          "typeString": "struct CECTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8156,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8154,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8126,
                        "src": "5140:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8150,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3025,
                                "src": "5115:13:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              ],
                              "id": 8149,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5107:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 8148,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5107:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 8151,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5107:22:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 8147,
                          "name": "ICECRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9478,
                          "src": "5094:12:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ICECRegistry_$9478_$",
                            "typeString": "type(contract ICECRegistry)"
                          }
                        },
                        "id": 8152,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5094:36:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ICECRegistry_$9478",
                          "typeString": "contract ICECRegistry"
                        }
                      },
                      "id": 8153,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9470,
                      "src": "5094:45:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_CECTerms_$22799_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct CECTerms memory)"
                      }
                    },
                    "id": 8155,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5094:54:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                      "typeString": "struct CECTerms memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5070:78:30"
                },
                {
                  "assignments": [
                    8158,
                    8160
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8158,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8217,
                      "src": "5159:19:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 8157,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "5159:9:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8160,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8217,
                      "src": "5180:20:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8159,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5180:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8164,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8162,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8130,
                        "src": "5216:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8161,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "5204:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 8163,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5204:19:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5158:65:30"
                },
                {
                  "assignments": [
                    8166
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8166,
                      "mutability": "mutable",
                      "name": "payoff",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8217,
                      "src": "5234:13:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 8165,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5234:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8188,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8171,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8146,
                        "src": "5304:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                          "typeString": "struct CECTerms memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8172,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8128,
                        "src": "5323:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8173,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8130,
                        "src": "5342:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8175,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8126,
                            "src": "5401:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8176,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8158,
                            "src": "5426:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8178,
                                "name": "scheduleTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8160,
                                "src": "5467:12:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8179,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8146,
                                  "src": "5481:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                                    "typeString": "struct CECTerms memory"
                                  }
                                },
                                "id": 8180,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "businessDayConvention",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22778,
                                "src": "5481:27:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                  "typeString": "enum BusinessDayConvention"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8181,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8146,
                                  "src": "5510:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                                    "typeString": "struct CECTerms memory"
                                  }
                                },
                                "id": 8182,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "calendar",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22772,
                                "src": "5510:14:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8183,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8146,
                                  "src": "5526:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                                    "typeString": "struct CECTerms memory"
                                  }
                                },
                                "id": 8184,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maturityDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22788,
                                "src": "5526:18:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                  "typeString": "enum BusinessDayConvention"
                                },
                                {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8177,
                              "name": "shiftCalcTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23056,
                              "src": "5453:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8185,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5453:92:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8174,
                          "name": "getExternalDataForPOF",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3850,
                          "src": "5362:21:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                            "typeString": "function (bytes32,enum EventType,uint256) view returns (bytes32)"
                          }
                        },
                        "id": 8186,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5362:197:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                          "typeString": "struct CECTerms memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8168,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8139,
                            "src": "5261:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 8167,
                          "name": "ICECEngine",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 29017,
                          "src": "5250:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ICECEngine_$29017_$",
                            "typeString": "type(contract ICECEngine)"
                          }
                        },
                        "id": 8169,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5250:18:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ICECEngine_$29017",
                          "typeString": "contract ICECEngine"
                        }
                      },
                      "id": 8170,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "computePayoffForEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28960,
                      "src": "5250:40:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_struct$_CECTerms_$22799_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                        "typeString": "function (struct CECTerms memory,struct State memory,bytes32,bytes32) pure external returns (int256)"
                      }
                    },
                    "id": 8187,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5250:319:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5234:335:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8189,
                      "name": "state",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8128,
                      "src": "5579:5:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 8194,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8146,
                          "src": "5640:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                            "typeString": "struct CECTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 8195,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8128,
                          "src": "5659:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 8196,
                          "name": "_event",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8130,
                          "src": "5678:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8198,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8126,
                              "src": "5737:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8199,
                              "name": "eventType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8158,
                              "src": "5762:9:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8201,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8160,
                                  "src": "5803:12:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8202,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8146,
                                    "src": "5817:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                                      "typeString": "struct CECTerms memory"
                                    }
                                  },
                                  "id": 8203,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22778,
                                  "src": "5817:27:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8204,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8146,
                                    "src": "5846:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                                      "typeString": "struct CECTerms memory"
                                    }
                                  },
                                  "id": 8205,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22772,
                                  "src": "5846:14:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8206,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8146,
                                    "src": "5862:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                                      "typeString": "struct CECTerms memory"
                                    }
                                  },
                                  "id": 8207,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22788,
                                  "src": "5862:18:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 8200,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "5789:13:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 8208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5789:92:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8197,
                            "name": "getExternalDataForSTF",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3793,
                            "src": "5698:21:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,enum EventType,uint256) view returns (bytes32)"
                            }
                          },
                          "id": 8209,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5698:197:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                            "typeString": "struct CECTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8191,
                              "name": "engine",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8139,
                              "src": "5598:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8190,
                            "name": "ICECEngine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29017,
                            "src": "5587:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ICECEngine_$29017_$",
                              "typeString": "type(contract ICECEngine)"
                            }
                          },
                          "id": 8192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5587:18:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ICECEngine_$29017",
                            "typeString": "contract ICECEngine"
                          }
                        },
                        "id": 8193,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "computeStateForEvent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28946,
                        "src": "5587:39:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_pure$_t_struct$_CECTerms_$22799_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CECTerms memory,struct State memory,bytes32,bytes32) pure external returns (struct State memory)"
                        }
                      },
                      "id": 8210,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5587:318:30",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "src": "5579:326:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "id": 8212,
                  "nodeType": "ExpressionStatement",
                  "src": "5579:326:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 8213,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8128,
                        "src": "5924:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8214,
                        "name": "payoff",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8166,
                        "src": "5931:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "id": 8215,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5923:15:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_State_$22673_memory_ptr_$_t_int256_$",
                      "typeString": "tuple(struct State memory,int256)"
                    }
                  },
                  "functionReturnParameters": 8137,
                  "id": 8216,
                  "nodeType": "Return",
                  "src": "5916:22:30"
                }
              ]
            },
            "documentation": null,
            "id": 8218,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeStateAndPayoffForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8132,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4949:8:30"
            },
            "parameters": {
              "id": 8131,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8126,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8218,
                  "src": "4858:15:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8125,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4858:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8128,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8218,
                  "src": "4875:18:30",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8127,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "4875:5:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8130,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8218,
                  "src": "4895:14:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8129,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4895:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4857:53:30"
            },
            "returnParameters": {
              "id": 8137,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8134,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8218,
                  "src": "4975:12:30",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8133,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "4975:5:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8136,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8218,
                  "src": "4989:6:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 8135,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4989:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4974:22:30"
            },
            "scope": 8219,
            "src": "4819:1126:30",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 8220,
        "src": "331:5616:30"
      }
    ],
    "src": "41:5906:30"
  },
  "legacyAST": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEC/CECActor.sol",
    "exportedSymbols": {
      "CECActor": [
        8219
      ]
    },
    "id": 8220,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7866,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:30"
      },
      {
        "id": 7867,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:30"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/CEC/ICECEngine.sol",
        "file": "@atpar/actus-solidity/contracts/Engines/CEC/ICECEngine.sol",
        "id": 7868,
        "nodeType": "ImportDirective",
        "scope": 8220,
        "sourceUnit": 29018,
        "src": "101:68:30",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetActor/BaseActor.sol",
        "file": "../Base/AssetActor/BaseActor.sol",
        "id": 7869,
        "nodeType": "ImportDirective",
        "scope": 8220,
        "sourceUnit": 3852,
        "src": "171:42:30",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/Custodian/ICustodian.sol",
        "file": "../Base/Custodian/ICustodian.sol",
        "id": 7870,
        "nodeType": "ImportDirective",
        "scope": 8220,
        "sourceUnit": 7476,
        "src": "214:42:30",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEC/ICECRegistry.sol",
        "file": "./ICECRegistry.sol",
        "id": 7871,
        "nodeType": "ImportDirective",
        "scope": 8220,
        "sourceUnit": 9479,
        "src": "257:28:30",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7873,
              "name": "BaseActor",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3851,
              "src": "352:9:30",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseActor_$3851",
                "typeString": "contract BaseActor"
              }
            },
            "id": 7874,
            "nodeType": "InheritanceSpecifier",
            "src": "352:9:30"
          }
        ],
        "contractDependencies": [
          3851,
          3868,
          7055,
          23277,
          24758,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 7872,
          "nodeType": "StructuredDocumentation",
          "src": "288:42:30",
          "text": " @title CECActor\n @notice TODO"
        },
        "fullyImplemented": true,
        "id": 8219,
        "linearizedBaseContracts": [
          8219,
          3851,
          38485,
          38376,
          3868,
          23277,
          24758,
          7055
        ],
        "name": "CECActor",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 7885,
              "nodeType": "Block",
              "src": "506:2:30",
              "statements": []
            },
            "documentation": null,
            "id": 7886,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7881,
                    "name": "assetRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7876,
                    "src": "473:13:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 7882,
                    "name": "dataRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7878,
                    "src": "488:12:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  }
                ],
                "id": 7883,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7880,
                  "name": "BaseActor",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3851,
                  "src": "463:9:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseActor_$3851_$",
                    "typeString": "type(contract BaseActor)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "463:38:30"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7879,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7876,
                  "mutability": "mutable",
                  "name": "assetRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7886,
                  "src": "382:28:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                    "typeString": "contract IAssetRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7875,
                    "name": "IAssetRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4500,
                    "src": "382:14:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7878,
                  "mutability": "mutable",
                  "name": "dataRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7886,
                  "src": "412:26:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                    "typeString": "contract IDataRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7877,
                    "name": "IDataRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7766,
                    "src": "412:13:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "381:58:30"
            },
            "returnParameters": {
              "id": 7884,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "506:0:30"
            },
            "scope": 8219,
            "src": "370:138:30",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8123,
              "nodeType": "Block",
              "src": "1345:3468:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 7918,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 7909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7904,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7894,
                            "src": "1376:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7907,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1394:1:30",
                                "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": 7906,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1386:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 7905,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1386:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 7908,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1386:10:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1376:20:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ContractType_$22559",
                            "typeString": "enum ContractType"
                          },
                          "id": 7917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7911,
                                    "name": "engine",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7894,
                                    "src": "1408:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 7910,
                                  "name": "IEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32432,
                                  "src": "1400:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IEngine_$32432_$",
                                    "typeString": "type(contract IEngine)"
                                  }
                                },
                                "id": 7912,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1400:15:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IEngine_$32432",
                                  "typeString": "contract IEngine"
                                }
                              },
                              "id": 7913,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "contractType",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32431,
                              "src": "1400:28:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$__$returns$_t_enum$_ContractType_$22559_$",
                                "typeString": "function () pure external returns (enum ContractType)"
                              }
                            },
                            "id": 7914,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1400:30:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractType_$22559",
                              "typeString": "enum ContractType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7915,
                              "name": "ContractType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22559,
                              "src": "1434:12:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                                "typeString": "type(enum ContractType)"
                              }
                            },
                            "id": 7916,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "CEC",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1434:16:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractType_$22559",
                              "typeString": "enum ContractType"
                            }
                          },
                          "src": "1400:50:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1376:74:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414e4e4163746f722e696e697469616c697a653a20434f4e54524143545f545950455f4f465f454e47494e455f554e535550504f52544544",
                        "id": 7919,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1464:58:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_123f2ddb69b620f39925260df1d2897b486c610d154d10f9bd3fa9b554741bce",
                          "typeString": "literal_string \"ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED\""
                        },
                        "value": "ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_123f2ddb69b620f39925260df1d2897b486c610d154d10f9bd3fa9b554741bce",
                          "typeString": "literal_string \"ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED\""
                        }
                      ],
                      "id": 7903,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1355:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7920,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1355:177:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7921,
                  "nodeType": "ExpressionStatement",
                  "src": "1355:177:30"
                },
                {
                  "assignments": [
                    7923
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7923,
                      "mutability": "mutable",
                      "name": "assetId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8123,
                      "src": "1579:15:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7922,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1579:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7932,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7927,
                            "name": "terms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7889,
                            "src": "1618:5:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                              "typeString": "struct CECTerms calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7928,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "1625:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 7929,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1625:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                              "typeString": "struct CECTerms calldata"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7925,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1607:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 7926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1607:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 7930,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1607:34:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 7924,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1597:9:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 7931,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1597:45:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1579:63:30"
                },
                {
                  "assignments": [
                    7934
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7934,
                      "mutability": "mutable",
                      "name": "ownership",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8123,
                      "src": "1652:31:30",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                        "typeString": "struct AssetOwnership"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7933,
                        "name": "AssetOwnership",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7849,
                        "src": "1652:14:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                          "typeString": "struct AssetOwnership"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7935,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1652:31:30"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                      "typeString": "enum ContractReferenceRole"
                    },
                    "id": 7941,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7936,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7889,
                          "src": "1783:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                            "typeString": "struct CECTerms calldata"
                          }
                        },
                        "id": 7937,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "contractReference_1",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22796,
                        "src": "1783:25:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ContractReference_$22632_calldata_ptr",
                          "typeString": "struct ContractReference calldata"
                        }
                      },
                      "id": 7938,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "role",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22631,
                      "src": "1783:30:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                        "typeString": "enum ContractReferenceRole"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7939,
                        "name": "ContractReferenceRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22525,
                        "src": "1817:21:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractReferenceRole_$22525_$",
                          "typeString": "type(enum ContractReferenceRole)"
                        }
                      },
                      "id": 7940,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "COVE",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1817:26:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                        "typeString": "enum ContractReferenceRole"
                      }
                    },
                    "src": "1783:60:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7955,
                  "nodeType": "IfStatement",
                  "src": "1779:252:30",
                  "trueBody": {
                    "id": 7954,
                    "nodeType": "Block",
                    "src": "1845:186:30",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 7950,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7943,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7889,
                                    "src": "1884:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                                      "typeString": "struct CECTerms calldata"
                                    }
                                  },
                                  "id": 7944,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "contractReference_1",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22796,
                                  "src": "1884:25:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ContractReference_$22632_calldata_ptr",
                                    "typeString": "struct ContractReference calldata"
                                  }
                                },
                                "id": 7945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "object",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22625,
                                "src": "1884:32:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 7948,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1928:1:30",
                                    "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": 7947,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1920:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 7946,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1920:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 7949,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1920:10:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "1884:46:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4345434163746f722e696e697469616c697a653a20494e56414c49445f434f4e54524143545f5245464552454e43455f315f4f424a454354",
                              "id": 7951,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1948:58:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_44ba041197d7c664073421ce5949cff1fddd0ad2c9b47b11ef85c24a599c5fca",
                                "typeString": "literal_string \"CECActor.initialize: INVALID_CONTRACT_REFERENCE_1_OBJECT\""
                              },
                              "value": "CECActor.initialize: INVALID_CONTRACT_REFERENCE_1_OBJECT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_44ba041197d7c664073421ce5949cff1fddd0ad2c9b47b11ef85c24a599c5fca",
                                "typeString": "literal_string \"CECActor.initialize: INVALID_CONTRACT_REFERENCE_1_OBJECT\""
                              }
                            ],
                            "id": 7942,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1859:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1859:161:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7953,
                        "nodeType": "ExpressionStatement",
                        "src": "1859:161:30"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                      "typeString": "enum ContractReferenceRole"
                    },
                    "id": 7961,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7956,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7889,
                          "src": "2135:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                            "typeString": "struct CECTerms calldata"
                          }
                        },
                        "id": 7957,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "contractReference_2",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22798,
                        "src": "2135:25:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ContractReference_$22632_calldata_ptr",
                          "typeString": "struct ContractReference calldata"
                        }
                      },
                      "id": 7958,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "role",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22631,
                      "src": "2135:30:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                        "typeString": "enum ContractReferenceRole"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7959,
                        "name": "ContractReferenceRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22525,
                        "src": "2169:21:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractReferenceRole_$22525_$",
                          "typeString": "type(enum ContractReferenceRole)"
                        }
                      },
                      "id": 7960,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "COVI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2169:26:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                        "typeString": "enum ContractReferenceRole"
                      }
                    },
                    "src": "2135:60:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8083,
                  "nodeType": "IfStatement",
                  "src": "2131:2127:30",
                  "trueBody": {
                    "id": 8082,
                    "nodeType": "Block",
                    "src": "2197:2061:30",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 7970,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7963,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7889,
                                    "src": "2236:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                                      "typeString": "struct CECTerms calldata"
                                    }
                                  },
                                  "id": 7964,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "contractReference_2",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22798,
                                  "src": "2236:25:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ContractReference_$22632_calldata_ptr",
                                    "typeString": "struct ContractReference calldata"
                                  }
                                },
                                "id": 7965,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "object",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22625,
                                "src": "2236:32:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 7968,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2280:1:30",
                                    "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": 7967,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2272:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 7966,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2272:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 7969,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2272:10:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "2236:46:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4345434163746f722e696e697469616c697a653a20494e56414c49445f434f4e54524143545f5245464552454e43455f325f4f424a454354",
                              "id": 7971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2300:58:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e277e6b6ba6c1c82e8f48630173758333f2be9b5ae2e16bc40a0615dbcd5297f",
                                "typeString": "literal_string \"CECActor.initialize: INVALID_CONTRACT_REFERENCE_2_OBJECT\""
                              },
                              "value": "CECActor.initialize: INVALID_CONTRACT_REFERENCE_2_OBJECT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e277e6b6ba6c1c82e8f48630173758333f2be9b5ae2e16bc40a0615dbcd5297f",
                                "typeString": "literal_string \"CECActor.initialize: INVALID_CONTRACT_REFERENCE_2_OBJECT\""
                              }
                            ],
                            "id": 7962,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2211:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2211:161:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7973,
                        "nodeType": "ExpressionStatement",
                        "src": "2211:161:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7987,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7974,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7923,
                            "src": "2457:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7978,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7889,
                                    "src": "2488:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                                      "typeString": "struct CECTerms calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 7981,
                                        "name": "custodian",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7898,
                                        "src": "2503:9:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 7980,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2495:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 7979,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2495:7:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 7982,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2495:18:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7983,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "2515:5:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 7984,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "2515:15:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                                      "typeString": "struct CECTerms calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7976,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "2477:3:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 7977,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2477:10:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 7985,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2477:54:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 7975,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "2467:9:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 7986,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2467:65:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2457:75:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 7988,
                        "nodeType": "ExpressionStatement",
                        "src": "2457:75:30"
                      },
                      {
                        "assignments": [
                          7990
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7990,
                            "mutability": "mutable",
                            "name": "underlyingAssetId",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8082,
                            "src": "2588:25:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 7989,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2588:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7994,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7991,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7889,
                              "src": "2616:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                                "typeString": "struct CECTerms calldata"
                              }
                            },
                            "id": 7992,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "contractReference_1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22796,
                            "src": "2616:25:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ContractReference_$22632_calldata_ptr",
                              "typeString": "struct ContractReference calldata"
                            }
                          },
                          "id": 7993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "object",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22625,
                          "src": "2616:32:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2588:60:30"
                      },
                      {
                        "assignments": [
                          7996
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7996,
                            "mutability": "mutable",
                            "name": "underlyingContractRole",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8082,
                            "src": "2740:35:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7995,
                              "name": "ContractRole",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 22539,
                              "src": "2740:12:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractRole_$22539",
                                "typeString": "enum ContractRole"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8004,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8000,
                                  "name": "underlyingAssetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7990,
                                  "src": "2835:17:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "636f6e7472616374526f6c65",
                                  "id": 8001,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2854:14:30",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_25827de09a431c20bbdc36b82f2598bebb6f799c13d479cbb6f07f3bb9ca40e8",
                                    "typeString": "literal_string \"contractRole\""
                                  },
                                  "value": "contractRole"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_25827de09a431c20bbdc36b82f2598bebb6f799c13d479cbb6f07f3bb9ca40e8",
                                    "typeString": "literal_string \"contractRole\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7998,
                                  "name": "assetRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3025,
                                  "src": "2791:13:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                    "typeString": "contract IAssetRegistry"
                                  }
                                },
                                "id": 7999,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getEnumValueForTermsAttribute",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6830,
                                "src": "2791:43:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint8_$",
                                  "typeString": "function (bytes32,bytes32) view external returns (uint8)"
                                }
                              },
                              "id": 8002,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2791:78:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 7997,
                            "name": "ContractRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22539,
                            "src": "2778:12:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ContractRole_$22539_$",
                              "typeString": "type(enum ContractRole)"
                            }
                          },
                          "id": 8003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2778:92:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ContractRole_$22539",
                            "typeString": "enum ContractRole"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2740:130:30"
                      },
                      {
                        "assignments": [
                          8006
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8006,
                            "mutability": "mutable",
                            "name": "underlyingAssetOwnership",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8082,
                            "src": "2884:46:30",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                              "typeString": "struct AssetOwnership"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 8005,
                              "name": "AssetOwnership",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 7849,
                              "src": "2884:14:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                                "typeString": "struct AssetOwnership"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8013,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8011,
                              "name": "underlyingAssetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7990,
                              "src": "2981:17:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8008,
                                  "name": "underlyingRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7900,
                                  "src": "2948:18:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 8007,
                                "name": "IAssetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4500,
                                "src": "2933:14:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IAssetRegistry_$4500_$",
                                  "typeString": "type(contract IAssetRegistry)"
                                }
                              },
                              "id": 8009,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2933:34:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                "typeString": "contract IAssetRegistry"
                              }
                            },
                            "id": 8010,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getOwnership",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4578,
                            "src": "2933:47:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_AssetOwnership_$7849_memory_ptr_$",
                              "typeString": "function (bytes32) view external returns (struct AssetOwnership memory)"
                            }
                          },
                          "id": 8012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2933:66:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                            "typeString": "struct AssetOwnership memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2884:115:30"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 8023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            },
                            "id": 8018,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8014,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7889,
                                "src": "3097:5:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                                  "typeString": "struct CECTerms calldata"
                                }
                              },
                              "id": 8015,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "contractRole",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22774,
                              "src": "3097:18:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractRole_$22539",
                                "typeString": "enum ContractRole"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8016,
                                "name": "ContractRole",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22539,
                                "src": "3119:12:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ContractRole_$22539_$",
                                  "typeString": "type(enum ContractRole)"
                                }
                              },
                              "id": 8017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "BUY",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3119:16:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractRole_$22539",
                                "typeString": "enum ContractRole"
                              }
                            },
                            "src": "3097:38:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            },
                            "id": 8022,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 8019,
                              "name": "underlyingContractRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7996,
                              "src": "3139:22:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractRole_$22539",
                                "typeString": "enum ContractRole"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8020,
                                "name": "ContractRole",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22539,
                                "src": "3165:12:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ContractRole_$22539_$",
                                  "typeString": "type(enum ContractRole)"
                                }
                              },
                              "id": 8021,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "RPA",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3165:16:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractRole_$22539",
                                "typeString": "enum ContractRole"
                              }
                            },
                            "src": "3139:42:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3097:84:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 8049,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ContractRole_$22539",
                                "typeString": "enum ContractRole"
                              },
                              "id": 8044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8040,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7889,
                                  "src": "3506:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                                    "typeString": "struct CECTerms calldata"
                                  }
                                },
                                "id": 8041,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "contractRole",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22774,
                                "src": "3506:18:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractRole_$22539",
                                  "typeString": "enum ContractRole"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8042,
                                  "name": "ContractRole",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22539,
                                  "src": "3528:12:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ContractRole_$22539_$",
                                    "typeString": "type(enum ContractRole)"
                                  }
                                },
                                "id": 8043,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "SEL",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3528:16:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractRole_$22539",
                                  "typeString": "enum ContractRole"
                                }
                              },
                              "src": "3506:38:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ContractRole_$22539",
                                "typeString": "enum ContractRole"
                              },
                              "id": 8048,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 8045,
                                "name": "underlyingContractRole",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7996,
                                "src": "3548:22:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractRole_$22539",
                                  "typeString": "enum ContractRole"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8046,
                                  "name": "ContractRole",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22539,
                                  "src": "3574:12:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ContractRole_$22539_$",
                                    "typeString": "type(enum ContractRole)"
                                  }
                                },
                                "id": 8047,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "RPL",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3574:16:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractRole_$22539",
                                  "typeString": "enum ContractRole"
                                }
                              },
                              "src": "3548:42:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "3506:84:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 8070,
                            "nodeType": "Block",
                            "src": "3916:148:30",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "4345434163746f722e696e697469616c697a653a20494e56414c49445f434f4e54524143545f524f4c4553",
                                      "id": 8067,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4003:45:30",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_415dd7c108e57ce82db0a6e9c3e684d4e63f82ebe62c12298e114ff5aace6d89",
                                        "typeString": "literal_string \"CECActor.initialize: INVALID_CONTRACT_ROLES\""
                                      },
                                      "value": "CECActor.initialize: INVALID_CONTRACT_ROLES"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_415dd7c108e57ce82db0a6e9c3e684d4e63f82ebe62c12298e114ff5aace6d89",
                                        "typeString": "literal_string \"CECActor.initialize: INVALID_CONTRACT_ROLES\""
                                      }
                                    ],
                                    "id": 8066,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "3996:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 8068,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3996:53:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 8069,
                                "nodeType": "ExpressionStatement",
                                "src": "3996:53:30"
                              }
                            ]
                          },
                          "id": 8071,
                          "nodeType": "IfStatement",
                          "src": "3502:562:30",
                          "trueBody": {
                            "id": 8065,
                            "nodeType": "Block",
                            "src": "3592:318:30",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8063,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 8050,
                                    "name": "ownership",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7934,
                                    "src": "3610:9:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                      "typeString": "struct AssetOwnership memory"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 8054,
                                            "name": "custodian",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7898,
                                            "src": "3666:9:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 8053,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "3658:7:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 8052,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3658:7:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 8055,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3658:18:30",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 8056,
                                          "name": "underlyingAssetOwnership",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8006,
                                          "src": "3698:24:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                            "typeString": "struct AssetOwnership memory"
                                          }
                                        },
                                        "id": 8057,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "creatorBeneficiary",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7844,
                                        "src": "3698:43:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 8058,
                                          "name": "underlyingAssetOwnership",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8006,
                                          "src": "3763:24:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                            "typeString": "struct AssetOwnership memory"
                                          }
                                        },
                                        "id": 8059,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "counterpartyObligor",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7846,
                                        "src": "3763:44:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 8060,
                                          "name": "underlyingAssetOwnership",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8006,
                                          "src": "3829:24:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                            "typeString": "struct AssetOwnership memory"
                                          }
                                        },
                                        "id": 8061,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "counterpartyBeneficiary",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7848,
                                        "src": "3829:48:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 8051,
                                      "name": "AssetOwnership",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7849,
                                      "src": "3622:14:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_struct$_AssetOwnership_$7849_storage_ptr_$",
                                        "typeString": "type(struct AssetOwnership storage pointer)"
                                      }
                                    },
                                    "id": 8062,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "structConstructorCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3622:273:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                      "typeString": "struct AssetOwnership memory"
                                    }
                                  },
                                  "src": "3610:285:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                    "typeString": "struct AssetOwnership memory"
                                  }
                                },
                                "id": 8064,
                                "nodeType": "ExpressionStatement",
                                "src": "3610:285:30"
                              }
                            ]
                          }
                        },
                        "id": 8072,
                        "nodeType": "IfStatement",
                        "src": "3093:971:30",
                        "trueBody": {
                          "id": 8039,
                          "nodeType": "Block",
                          "src": "3183:313:30",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8037,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 8024,
                                  "name": "ownership",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7934,
                                  "src": "3201:9:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                    "typeString": "struct AssetOwnership memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8026,
                                        "name": "underlyingAssetOwnership",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8006,
                                        "src": "3249:24:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                          "typeString": "struct AssetOwnership memory"
                                        }
                                      },
                                      "id": 8027,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "creatorObligor",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7842,
                                      "src": "3249:39:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8028,
                                        "name": "underlyingAssetOwnership",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8006,
                                        "src": "3310:24:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                          "typeString": "struct AssetOwnership memory"
                                        }
                                      },
                                      "id": 8029,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "creatorBeneficiary",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7844,
                                      "src": "3310:43:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 8032,
                                          "name": "custodian",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7898,
                                          "src": "3383:9:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 8031,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3375:7:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 8030,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3375:7:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 8033,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3375:18:30",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8034,
                                        "name": "underlyingAssetOwnership",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8006,
                                        "src": "3415:24:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                          "typeString": "struct AssetOwnership memory"
                                        }
                                      },
                                      "id": 8035,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "counterpartyBeneficiary",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7848,
                                      "src": "3415:48:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 8025,
                                    "name": "AssetOwnership",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7849,
                                    "src": "3213:14:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_AssetOwnership_$7849_storage_ptr_$",
                                      "typeString": "type(struct AssetOwnership storage pointer)"
                                    }
                                  },
                                  "id": 8036,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3213:268:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                    "typeString": "struct AssetOwnership memory"
                                  }
                                },
                                "src": "3201:280:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                  "typeString": "struct AssetOwnership memory"
                                }
                              },
                              "id": 8038,
                              "nodeType": "ExpressionStatement",
                              "src": "3201:280:30"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8077,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7923,
                              "src": "4221:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8078,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7889,
                              "src": "4230:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                                "typeString": "struct CECTerms calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8079,
                              "name": "ownership",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7934,
                              "src": "4237:9:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                "typeString": "struct AssetOwnership memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                                "typeString": "struct CECTerms calldata"
                              },
                              {
                                "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                "typeString": "struct AssetOwnership memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8074,
                                  "name": "custodian",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7898,
                                  "src": "4195:9:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 8073,
                                "name": "ICustodian",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7475,
                                "src": "4184:10:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ICustodian_$7475_$",
                                  "typeString": "type(contract ICustodian)"
                                }
                              },
                              "id": 8075,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4184:21:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ICustodian_$7475",
                                "typeString": "contract ICustodian"
                              }
                            },
                            "id": 8076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lockCollateral",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7467,
                            "src": "4184:36:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_struct$_CECTerms_$22799_memory_ptr_$_t_struct$_AssetOwnership_$7849_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (bytes32,struct CECTerms memory,struct AssetOwnership memory) external returns (bool)"
                            }
                          },
                          "id": 8080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4184:63:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8081,
                        "nodeType": "ExpressionStatement",
                        "src": "4184:63:30"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    8085
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8085,
                      "mutability": "mutable",
                      "name": "initialState",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8123,
                      "src": "4318:25:30",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 8084,
                        "name": "State",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22673,
                        "src": "4318:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                          "typeString": "struct State"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8092,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8090,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7889,
                        "src": "4385:5:30",
                        "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,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8087,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7894,
                            "src": "4357:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 8086,
                          "name": "ICECEngine",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 29017,
                          "src": "4346:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ICECEngine_$29017_$",
                            "typeString": "type(contract ICECEngine)"
                          }
                        },
                        "id": 8088,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4346:18:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ICECEngine_$29017",
                          "typeString": "contract ICECEngine"
                        }
                      },
                      "id": 8089,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "computeInitialState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28932,
                      "src": "4346:38:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_struct$_CECTerms_$22799_memory_ptr_$returns$_t_struct$_State_$22673_memory_ptr_$",
                        "typeString": "function (struct CECTerms memory) pure external returns (struct State memory)"
                      }
                    },
                    "id": 8091,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4346:45:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4318:73:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8100,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7923,
                        "src": "4517:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8101,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7889,
                        "src": "4538:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                          "typeString": "struct CECTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8102,
                        "name": "initialState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8085,
                        "src": "4557:12:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8103,
                        "name": "schedule",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7892,
                        "src": "4583:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8104,
                        "name": "ownership",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7934,
                        "src": "4605:9:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                          "typeString": "struct AssetOwnership memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8105,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7894,
                        "src": "4628:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8108,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "4656:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_CECActor_$8219",
                              "typeString": "contract CECActor"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_CECActor_$8219",
                              "typeString": "contract CECActor"
                            }
                          ],
                          "id": 8107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4648:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 8106,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4648:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 8109,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4648:13:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8110,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7896,
                        "src": "4675:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                          "typeString": "struct CECTerms calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                          "typeString": "struct AssetOwnership memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8096,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3025,
                                "src": "4474:13:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              ],
                              "id": 8095,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4466:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 8094,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4466:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 8097,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4466:22:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 8093,
                          "name": "ICECRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9478,
                          "src": "4453:12:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ICECRegistry_$9478_$",
                            "typeString": "type(contract ICECRegistry)"
                          }
                        },
                        "id": 8098,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4453:36:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ICECRegistry_$9478",
                          "typeString": "contract ICECRegistry"
                        }
                      },
                      "id": 8099,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "registerAsset",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9463,
                      "src": "4453:50:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_struct$_CECTerms_$22799_memory_ptr_$_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 CECTerms memory,struct State memory,bytes32[] memory,struct AssetOwnership memory,address,address,address) external"
                      }
                    },
                    "id": 8111,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4453:237:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8112,
                  "nodeType": "ExpressionStatement",
                  "src": "4453:237:30"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8114,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7923,
                        "src": "4723:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 8115,
                          "name": "ContractType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22559,
                          "src": "4732:12:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                            "typeString": "type(enum ContractType)"
                          }
                        },
                        "id": 8116,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "CEC",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4732:16:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ContractType_$22559",
                          "typeString": "enum ContractType"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 8117,
                          "name": "ownership",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7934,
                          "src": "4750:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                            "typeString": "struct AssetOwnership memory"
                          }
                        },
                        "id": 8118,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creatorObligor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7842,
                        "src": "4750:24:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 8119,
                          "name": "ownership",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7934,
                          "src": "4776:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                            "typeString": "struct AssetOwnership memory"
                          }
                        },
                        "id": 8120,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "counterpartyObligor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7846,
                        "src": "4776:29:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_enum$_ContractType_$22559",
                          "typeString": "enum ContractType"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8113,
                      "name": "InitializedAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3007,
                      "src": "4706:16:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_enum$_ContractType_$22559_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,enum ContractType,address,address)"
                      }
                    },
                    "id": 8121,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4706:100:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8122,
                  "nodeType": "EmitStatement",
                  "src": "4701:105:30"
                }
              ]
            },
            "documentation": {
              "id": 7887,
              "nodeType": "StructuredDocumentation",
              "src": "514:599:30",
              "text": " @notice Derives initial state of the asset terms and stores together with\n terms, schedule, ownership, engine, admin of the asset in the contract types specific AssetRegistry.\n @param terms asset specific terms\n @param schedule schedule of the asset\n @param engine address of the ACTUS engine used for the spec. ContractType\n @param admin address of the admin of the asset (optional)\n @param custodian address of the custodian of the collateral\n @param underlyingRegistry address of the asset registry where the underlying asset is stored"
            },
            "functionSelector": "d56a1ddf",
            "id": 8124,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7901,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7889,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8124,
                  "src": "1147:23:30",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CECTerms_$22799_calldata_ptr",
                    "typeString": "struct CECTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7888,
                    "name": "CECTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22799,
                    "src": "1147:8:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CECTerms_$22799_storage_ptr",
                      "typeString": "struct CECTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7892,
                  "mutability": "mutable",
                  "name": "schedule",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8124,
                  "src": "1180:27:30",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7890,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1180:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 7891,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1180:9:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7894,
                  "mutability": "mutable",
                  "name": "engine",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8124,
                  "src": "1217:14:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7893,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1217:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7896,
                  "mutability": "mutable",
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8124,
                  "src": "1241:13:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7895,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1241:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7898,
                  "mutability": "mutable",
                  "name": "custodian",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8124,
                  "src": "1264:17:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7897,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1264:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7900,
                  "mutability": "mutable",
                  "name": "underlyingRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8124,
                  "src": "1291:26:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7899,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1291:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1137:186:30"
            },
            "returnParameters": {
              "id": 7902,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1345:0:30"
            },
            "scope": 8219,
            "src": "1118:3695:30",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3563
            ],
            "body": {
              "id": 8217,
              "nodeType": "Block",
              "src": "5001:944:30",
              "statements": [
                {
                  "assignments": [
                    8139
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8139,
                      "mutability": "mutable",
                      "name": "engine",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8217,
                      "src": "5011:14:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8138,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5011:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8144,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8142,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8126,
                        "src": "5052:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8140,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "5028:13:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 8141,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getEngine",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4517,
                      "src": "5028:23:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 8143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5028:32:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5011:49:30"
                },
                {
                  "assignments": [
                    8146
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8146,
                      "mutability": "mutable",
                      "name": "terms",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8217,
                      "src": "5070:21:30",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                        "typeString": "struct CECTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 8145,
                        "name": "CECTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22799,
                        "src": "5070:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CECTerms_$22799_storage_ptr",
                          "typeString": "struct CECTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8156,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8154,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8126,
                        "src": "5140:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8150,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3025,
                                "src": "5115:13:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              ],
                              "id": 8149,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5107:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 8148,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5107:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 8151,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5107:22:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 8147,
                          "name": "ICECRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9478,
                          "src": "5094:12:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ICECRegistry_$9478_$",
                            "typeString": "type(contract ICECRegistry)"
                          }
                        },
                        "id": 8152,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5094:36:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ICECRegistry_$9478",
                          "typeString": "contract ICECRegistry"
                        }
                      },
                      "id": 8153,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9470,
                      "src": "5094:45:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_CECTerms_$22799_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct CECTerms memory)"
                      }
                    },
                    "id": 8155,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5094:54:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                      "typeString": "struct CECTerms memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5070:78:30"
                },
                {
                  "assignments": [
                    8158,
                    8160
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8158,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8217,
                      "src": "5159:19:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 8157,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "5159:9:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8160,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8217,
                      "src": "5180:20:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8159,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5180:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8164,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8162,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8130,
                        "src": "5216:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8161,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "5204:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 8163,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5204:19:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5158:65:30"
                },
                {
                  "assignments": [
                    8166
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8166,
                      "mutability": "mutable",
                      "name": "payoff",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8217,
                      "src": "5234:13:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 8165,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5234:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8188,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8171,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8146,
                        "src": "5304:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                          "typeString": "struct CECTerms memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8172,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8128,
                        "src": "5323:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8173,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8130,
                        "src": "5342:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8175,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8126,
                            "src": "5401:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8176,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8158,
                            "src": "5426:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8178,
                                "name": "scheduleTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8160,
                                "src": "5467:12:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8179,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8146,
                                  "src": "5481:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                                    "typeString": "struct CECTerms memory"
                                  }
                                },
                                "id": 8180,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "businessDayConvention",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22778,
                                "src": "5481:27:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                  "typeString": "enum BusinessDayConvention"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8181,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8146,
                                  "src": "5510:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                                    "typeString": "struct CECTerms memory"
                                  }
                                },
                                "id": 8182,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "calendar",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22772,
                                "src": "5510:14:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8183,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8146,
                                  "src": "5526:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                                    "typeString": "struct CECTerms memory"
                                  }
                                },
                                "id": 8184,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maturityDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22788,
                                "src": "5526:18:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                  "typeString": "enum BusinessDayConvention"
                                },
                                {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8177,
                              "name": "shiftCalcTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23056,
                              "src": "5453:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8185,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5453:92:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8174,
                          "name": "getExternalDataForPOF",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3850,
                          "src": "5362:21:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                            "typeString": "function (bytes32,enum EventType,uint256) view returns (bytes32)"
                          }
                        },
                        "id": 8186,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5362:197:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                          "typeString": "struct CECTerms memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8168,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8139,
                            "src": "5261:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 8167,
                          "name": "ICECEngine",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 29017,
                          "src": "5250:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ICECEngine_$29017_$",
                            "typeString": "type(contract ICECEngine)"
                          }
                        },
                        "id": 8169,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5250:18:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ICECEngine_$29017",
                          "typeString": "contract ICECEngine"
                        }
                      },
                      "id": 8170,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "computePayoffForEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28960,
                      "src": "5250:40:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_struct$_CECTerms_$22799_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                        "typeString": "function (struct CECTerms memory,struct State memory,bytes32,bytes32) pure external returns (int256)"
                      }
                    },
                    "id": 8187,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5250:319:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5234:335:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8189,
                      "name": "state",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8128,
                      "src": "5579:5:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 8194,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8146,
                          "src": "5640:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                            "typeString": "struct CECTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 8195,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8128,
                          "src": "5659:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 8196,
                          "name": "_event",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8130,
                          "src": "5678:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8198,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8126,
                              "src": "5737:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8199,
                              "name": "eventType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8158,
                              "src": "5762:9:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8201,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8160,
                                  "src": "5803:12:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8202,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8146,
                                    "src": "5817:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                                      "typeString": "struct CECTerms memory"
                                    }
                                  },
                                  "id": 8203,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22778,
                                  "src": "5817:27:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8204,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8146,
                                    "src": "5846:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                                      "typeString": "struct CECTerms memory"
                                    }
                                  },
                                  "id": 8205,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22772,
                                  "src": "5846:14:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8206,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8146,
                                    "src": "5862:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                                      "typeString": "struct CECTerms memory"
                                    }
                                  },
                                  "id": 8207,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22788,
                                  "src": "5862:18:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 8200,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "5789:13:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 8208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5789:92:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8197,
                            "name": "getExternalDataForSTF",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3793,
                            "src": "5698:21:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,enum EventType,uint256) view returns (bytes32)"
                            }
                          },
                          "id": 8209,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5698:197:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CECTerms_$22799_memory_ptr",
                            "typeString": "struct CECTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8191,
                              "name": "engine",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8139,
                              "src": "5598:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8190,
                            "name": "ICECEngine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29017,
                            "src": "5587:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ICECEngine_$29017_$",
                              "typeString": "type(contract ICECEngine)"
                            }
                          },
                          "id": 8192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5587:18:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ICECEngine_$29017",
                            "typeString": "contract ICECEngine"
                          }
                        },
                        "id": 8193,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "computeStateForEvent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28946,
                        "src": "5587:39:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_pure$_t_struct$_CECTerms_$22799_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CECTerms memory,struct State memory,bytes32,bytes32) pure external returns (struct State memory)"
                        }
                      },
                      "id": 8210,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5587:318:30",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "src": "5579:326:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "id": 8212,
                  "nodeType": "ExpressionStatement",
                  "src": "5579:326:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 8213,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8128,
                        "src": "5924:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8214,
                        "name": "payoff",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8166,
                        "src": "5931:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "id": 8215,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5923:15:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_State_$22673_memory_ptr_$_t_int256_$",
                      "typeString": "tuple(struct State memory,int256)"
                    }
                  },
                  "functionReturnParameters": 8137,
                  "id": 8216,
                  "nodeType": "Return",
                  "src": "5916:22:30"
                }
              ]
            },
            "documentation": null,
            "id": 8218,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeStateAndPayoffForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8132,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4949:8:30"
            },
            "parameters": {
              "id": 8131,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8126,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8218,
                  "src": "4858:15:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8125,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4858:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8128,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8218,
                  "src": "4875:18:30",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8127,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "4875:5:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8130,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8218,
                  "src": "4895:14:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8129,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4895:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4857:53:30"
            },
            "returnParameters": {
              "id": 8137,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8134,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8218,
                  "src": "4975:12:30",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8133,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "4975:5:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8136,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8218,
                  "src": "4989:6:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 8135,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4989:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4974:22:30"
            },
            "scope": 8219,
            "src": "4819:1126:30",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 8220,
        "src": "331:5616:30"
      }
    ],
    "src": "41:5906:30"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {
    "4": {
      "events": {
        "0xc5df678b84aa92f5f59981df8c9997b366d886de25771c5f753015c2e14e907a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "creator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "counterparty",
              "type": "address"
            }
          ],
          "name": "InitializedAsset",
          "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"
        },
        "0xd255be8589971f117e0e4377177282fb7cce66e378bfb1b7eafddd05e4f181e9": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "enum EventType",
              "name": "eventType",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "scheduleTime",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "payoff",
              "type": "int256"
            }
          ],
          "name": "ProgressedAsset",
          "type": "event"
        },
        "0x4f269a19b64cfff0bdee7fd3cdaec44e1fe38ce2ff55d3009a89fac6ecbe9f2c": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "statusMessage",
              "type": "bytes32"
            }
          ],
          "name": "Status",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xF4EE09Ca88E07fB574FD92f8d96Bc03D13507cAf",
      "transactionHash": "0xb1a82977a6fb210c9ba84c29bbd02f755a6e06ab78586f1c287d06504c788b36"
    },
    "5": {
      "events": {
        "0xc5df678b84aa92f5f59981df8c9997b366d886de25771c5f753015c2e14e907a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "creator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "counterparty",
              "type": "address"
            }
          ],
          "name": "InitializedAsset",
          "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"
        },
        "0xd255be8589971f117e0e4377177282fb7cce66e378bfb1b7eafddd05e4f181e9": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "enum EventType",
              "name": "eventType",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "scheduleTime",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "payoff",
              "type": "int256"
            }
          ],
          "name": "ProgressedAsset",
          "type": "event"
        },
        "0x4f269a19b64cfff0bdee7fd3cdaec44e1fe38ce2ff55d3009a89fac6ecbe9f2c": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "statusMessage",
              "type": "bytes32"
            }
          ],
          "name": "Status",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x2161dB46DBd8025652240d1eFe4D91244FBC46d3",
      "transactionHash": "0x1e2ea81f1114f456739dd3e18834c78f651573800515d78f220537127c89e35f"
    },
    "1994": {
      "events": {
        "0xc5df678b84aa92f5f59981df8c9997b366d886de25771c5f753015c2e14e907a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "creator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "counterparty",
              "type": "address"
            }
          ],
          "name": "InitializedAsset",
          "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"
        },
        "0xd255be8589971f117e0e4377177282fb7cce66e378bfb1b7eafddd05e4f181e9": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "enum EventType",
              "name": "eventType",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "scheduleTime",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "payoff",
              "type": "int256"
            }
          ],
          "name": "ProgressedAsset",
          "type": "event"
        },
        "0x4f269a19b64cfff0bdee7fd3cdaec44e1fe38ce2ff55d3009a89fac6ecbe9f2c": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "statusMessage",
              "type": "bytes32"
            }
          ],
          "name": "Status",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x0B84EcC3cb862E82e6F6A687BBeEdC8866B8DebD",
      "transactionHash": "0x43f9d472cea4baa7f465b9ff6a290f52ba75b001c49e827e5ab2e80c64988e94"
    }
  },
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:17.767Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "initialize((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint256,uint256,int256,int256,int256,(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),bytes32[],address,address,address,address)": {
        "params": {
          "admin": "address of the admin of the asset (optional)",
          "custodian": "address of the custodian of the collateral",
          "engine": "address of the ACTUS engine used for the spec. ContractType",
          "schedule": "schedule of the asset",
          "terms": "asset specific terms",
          "underlyingRegistry": "address of the asset registry where the underlying asset is stored"
        }
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "progress(bytes32)": {
        "details": "Emits ProgressedAsset if the state of the asset was updated.",
        "params": {
          "assetId": "id of the asset"
        }
      },
      "progressWith(bytes32,bytes32)": {
        "details": "Emits ProgressedAsset if the state of the asset was updated.",
        "params": {
          "_event": "the unscheduled event",
          "assetId": "id of the asset"
        }
      },
      "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."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "title": "CECActor",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "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"
      },
      "initialize((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint256,uint256,int256,int256,int256,(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),bytes32[],address,address,address,address)": {
        "notice": "Derives initial state of the asset terms and stores together with terms, schedule, ownership, engine, admin of the asset in the contract types specific AssetRegistry."
      },
      "progress(bytes32)": {
        "notice": "Proceeds with the next state of the asset based on the terms, the last state, market object data and the settlement status of current obligation, derived from either a prev. pending event, an event generated based on the current state of an underlying asset or the assets schedule."
      },
      "progressWith(bytes32,bytes32)": {
        "notice": "Proceeds with the next state of the asset based on the terms, the last state, market object data and the settlement status of current obligation, derived from a provided (unscheduled) event Reverts if the provided event violates the order of events."
      },
      "shiftCalcTime(uint256,uint8,uint8,uint256)": {
        "notice": "Used in POFs and STFs for DCFs. No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided."
      }
    },
    "notice": "TODO",
    "version": 1
  }
}