{
  "contractName": "Certificate",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "certifiedEmail",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "eventsId",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "file",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "id",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "createdAt",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "deployer",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "certificateId",
          "type": "string"
        },
        {
          "name": "certifiedEmailDeployer",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "certificateOwner",
          "type": "address"
        },
        {
          "name": "certificateCreatedAt",
          "type": "uint256"
        }
      ],
      "name": "init",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "fileHash",
          "type": "string"
        },
        {
          "name": "fileId",
          "type": "string"
        },
        {
          "name": "fileName",
          "type": "string"
        },
        {
          "name": "fileCreatedAt",
          "type": "uint256"
        },
        {
          "name": "fileSize",
          "type": "uint256"
        }
      ],
      "name": "createFile",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "eventId",
          "type": "string"
        },
        {
          "name": "eventType",
          "type": "string"
        },
        {
          "name": "eventUserAgent",
          "type": "string"
        },
        {
          "name": "eventCreatedAt",
          "type": "uint256"
        }
      ],
      "name": "createEvent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "eventId",
          "type": "string"
        }
      ],
      "name": "getEvent",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEventsSize",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b50604051620013fd380380620013fd833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b505060209182015181519194509250620000a091600b9190850190620000d1565b50600a8054600160a060020a03909216600160a060020a031992831617905560088054909116331790555062000176565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200011457805160ff191683800117855562000144565b8280016001018555821562000144579182015b828111156200014457825182559160200191906001019062000127565b506200015292915062000156565b5090565b6200017391905b808211156200015257600081556001016200015d565b90565b61127780620001866000396000f3fe6080604052600436106100a05763ffffffff60e060020a600035041663399ae72481146100a557806357ac264e146100e05780636a470b28146101075780636bee1e1b1461013857806372c97e7f146102f85780638525855d146103975780638da5cb5b146103ac578063af640d0f146103c1578063cf09e0d0146103d6578063d5f39488146103eb578063de4cd84214610400578063e1902063146105bd575b600080fd5b3480156100b157600080fd5b506100de600480360360408110156100c857600080fd5b50600160a060020a03813516906020013561066e565b005b3480156100ec57600080fd5b506100f56106f8565b60408051918252519081900360200190f35b34801561011357600080fd5b5061011c6106ff565b60408051600160a060020a039092168252519081900360200190f35b34801561014457600080fd5b506100de600480360360a081101561015b57600080fd5b810190602081018135602060020a81111561017557600080fd5b82018360208201111561018757600080fd5b803590602001918460018302840111602060020a831117156101a857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a8111156101fa57600080fd5b82018360208201111561020c57600080fd5b803590602001918460018302840111602060020a8311171561022d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561027f57600080fd5b82018360208201111561029157600080fd5b803590602001918460018302840111602060020a831117156102b257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020013561070e565b34801561030457600080fd5b506103226004803603602081101561031b57600080fd5b5035610a91565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561035c578181015183820152602001610344565b50505050905090810190601f1680156103895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103a357600080fd5b5061011c610b38565b3480156103b857600080fd5b5061011c610b47565b3480156103cd57600080fd5b50610322610b56565b3480156103e257600080fd5b506100f5610bb1565b3480156103f757600080fd5b5061011c610bb7565b34801561040c57600080fd5b506100de6004803603608081101561042357600080fd5b810190602081018135602060020a81111561043d57600080fd5b82018360208201111561044f57600080fd5b803590602001918460018302840111602060020a8311171561047057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a8111156104c257600080fd5b8201836020820111156104d457600080fd5b803590602001918460018302840111602060020a831117156104f557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561054757600080fd5b82018360208201111561055957600080fd5b803590602001918460018302840111602060020a8311171561057a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610bc6915050565b3480156105c957600080fd5b5061011c600480360360208110156105e057600080fd5b810190602081018135602060020a8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111602060020a8311171561062d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611073945050505050565b600854600160a060020a031633146106d2576040805160e560020a62461bcd028152602060048201526033602482015260008051602061122c833981519152604482015260008051602061120c833981519152606482015290519081900360840190fd5b60098054600160a060020a031916600160a060020a039390931692909217909155600d55565b600c545b90565b600854600160a060020a031681565b600854600160a060020a03163314610772576040805160e560020a62461bcd028152602060048201526033602482015260008051602061122c833981519152604482015260008051602061120c833981519152606482015290519081900360840190fd5b600a54604051602060248201818152875160448401528751600094606094600160a060020a03909116938a93928392606401918501908083838b5b838110156107c55781810151838201526020016107ad565b50505050905090810190601f1680156107f25780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e160020a63548b880902178152905182519295509350839250908083835b602083106108505780518252601f199092019160209182019101610831565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146108b0576040519150601f19603f3d011682016040523d82523d6000602084013e6108b5565b606091505b5091509150811515610928576040805160e560020a62461bcd02815260206004820152602b60248201527f4572726f72207768696c65206465706c6f79696e672066696c652066726f6d20604482015260a860020a6a636572746966696361746502606482015290519081900360840190fd5b6109318161116c565b600e8054600160a060020a031916600160a060020a03928316179081905560405160e260020a6321f20119028152604481018790526064810186905260806004820190815288516084830152885192909316926387c804649289928c928a928a928291602482019160a40190602089019080838360005b838110156109c05781810151838201526020016109a8565b50505050905090810190601f1680156109ed5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015610a20578181015183820152602001610a08565b50505050905090810190601f168015610a4d5780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015610a7057600080fd5b505af1158015610a84573d6000803e3d6000fd5b5050505050505050505050565b600c805482908110610a9f57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815293509091830182828015610b305780601f10610b0557610100808354040283529160200191610b30565b820191906000526020600020905b815481529060010190602001808311610b1357829003601f168201915b505050505081565b600e54600160a060020a031681565b600954600160a060020a031681565b600b805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610b305780601f10610b0557610100808354040283529160200191610b30565b600d5481565b600a54600160a060020a031681565b600854600160a060020a03163314610c2a576040805160e560020a62461bcd028152602060048201526033602482015260008051602061122c833981519152604482015260008051602061120c833981519152606482015290519081900360840190fd5b6000600160a060020a0316600f856040518082805190602001908083835b60208310610c675780518252601f199092019160209182019101610c48565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a0316929092149150610cf89050576040805160e560020a62461bcd02815260206004820181905260248201527f5468652063757272656e74206576656e7420616c726561647920657869737473604482015290519081900360640190fd5b60006060600a60009054906101000a9004600160a060020a0316600160a060020a03168686868660405160240180806020018060200180602001858152602001848103845288818151815260200191508051906020019080838360005b83811015610d6d578181015183820152602001610d55565b50505050905090810190601f168015610d9a5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015610dcd578181015183820152602001610db5565b50505050905090810190601f168015610dfa5780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b83811015610e2d578181015183820152602001610e15565b50505050905090810190601f168015610e5a5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e060020a63f776d03b0217815290518251929a509850889750955093508392508591508490505b60208310610ec15780518252601f199092019160209182019101610ea2565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610f21576040519150601f19603f3d011682016040523d82523d6000602084013e610f26565b606091505b5091509150811515610f9a576040805160e560020a62461bcd02815260206004820152602c60248201527f4572726f72207768696c65206465706c6f79696e67206576656e742066726f6d604482015260a060020a6b20636572746966696361746502606482015290519081900360840190fd5b610fa38161116c565b600f876040518082805190602001908083835b60208310610fd55780518252601f199092019160209182019101610fb6565b51815160209384036101000a60001901801990921691161790529201948552506040519384900381019093208054600160a060020a031916600160a060020a03959095169490941790935550600c8054600181018083556000929092528951919350611069927fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c790910191908a0190611173565b5050505050505050565b600080600160a060020a0316600f836040518082805190602001908083835b602083106110b15780518252601f199092019160209182019101611092565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a0316929092141591506110fb905057506000611167565b600f826040518082805190602001908083835b6020831061112d5780518252601f19909201916020918201910161110e565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a0316925050505b919050565b6020015190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106111b457805160ff19168380011785556111e1565b828001600101855582156111e1579182015b828111156111e15782518255916020019190600101906111c6565b506111ed9291506111f1565b5090565b6106fc91905b808211156111ed57600081556001016111f756fe706572666f726d207468697320616374696f6e000000000000000000000000004f6e6c7920436572746966696564456d61696c206163636f756e742063616e20a165627a7a723058209fc69d8710b708906b92eaf71c8591883146de34d1ae0e072c4a4fef3ada626e0029",
  "deployedBytecode": "0x6080604052600436106100a05763ffffffff60e060020a600035041663399ae72481146100a557806357ac264e146100e05780636a470b28146101075780636bee1e1b1461013857806372c97e7f146102f85780638525855d146103975780638da5cb5b146103ac578063af640d0f146103c1578063cf09e0d0146103d6578063d5f39488146103eb578063de4cd84214610400578063e1902063146105bd575b600080fd5b3480156100b157600080fd5b506100de600480360360408110156100c857600080fd5b50600160a060020a03813516906020013561066e565b005b3480156100ec57600080fd5b506100f56106f8565b60408051918252519081900360200190f35b34801561011357600080fd5b5061011c6106ff565b60408051600160a060020a039092168252519081900360200190f35b34801561014457600080fd5b506100de600480360360a081101561015b57600080fd5b810190602081018135602060020a81111561017557600080fd5b82018360208201111561018757600080fd5b803590602001918460018302840111602060020a831117156101a857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a8111156101fa57600080fd5b82018360208201111561020c57600080fd5b803590602001918460018302840111602060020a8311171561022d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561027f57600080fd5b82018360208201111561029157600080fd5b803590602001918460018302840111602060020a831117156102b257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020013561070e565b34801561030457600080fd5b506103226004803603602081101561031b57600080fd5b5035610a91565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561035c578181015183820152602001610344565b50505050905090810190601f1680156103895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103a357600080fd5b5061011c610b38565b3480156103b857600080fd5b5061011c610b47565b3480156103cd57600080fd5b50610322610b56565b3480156103e257600080fd5b506100f5610bb1565b3480156103f757600080fd5b5061011c610bb7565b34801561040c57600080fd5b506100de6004803603608081101561042357600080fd5b810190602081018135602060020a81111561043d57600080fd5b82018360208201111561044f57600080fd5b803590602001918460018302840111602060020a8311171561047057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a8111156104c257600080fd5b8201836020820111156104d457600080fd5b803590602001918460018302840111602060020a831117156104f557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561054757600080fd5b82018360208201111561055957600080fd5b803590602001918460018302840111602060020a8311171561057a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610bc6915050565b3480156105c957600080fd5b5061011c600480360360208110156105e057600080fd5b810190602081018135602060020a8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111602060020a8311171561062d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611073945050505050565b600854600160a060020a031633146106d2576040805160e560020a62461bcd028152602060048201526033602482015260008051602061122c833981519152604482015260008051602061120c833981519152606482015290519081900360840190fd5b60098054600160a060020a031916600160a060020a039390931692909217909155600d55565b600c545b90565b600854600160a060020a031681565b600854600160a060020a03163314610772576040805160e560020a62461bcd028152602060048201526033602482015260008051602061122c833981519152604482015260008051602061120c833981519152606482015290519081900360840190fd5b600a54604051602060248201818152875160448401528751600094606094600160a060020a03909116938a93928392606401918501908083838b5b838110156107c55781810151838201526020016107ad565b50505050905090810190601f1680156107f25780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e160020a63548b880902178152905182519295509350839250908083835b602083106108505780518252601f199092019160209182019101610831565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146108b0576040519150601f19603f3d011682016040523d82523d6000602084013e6108b5565b606091505b5091509150811515610928576040805160e560020a62461bcd02815260206004820152602b60248201527f4572726f72207768696c65206465706c6f79696e672066696c652066726f6d20604482015260a860020a6a636572746966696361746502606482015290519081900360840190fd5b6109318161116c565b600e8054600160a060020a031916600160a060020a03928316179081905560405160e260020a6321f20119028152604481018790526064810186905260806004820190815288516084830152885192909316926387c804649289928c928a928a928291602482019160a40190602089019080838360005b838110156109c05781810151838201526020016109a8565b50505050905090810190601f1680156109ed5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015610a20578181015183820152602001610a08565b50505050905090810190601f168015610a4d5780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015610a7057600080fd5b505af1158015610a84573d6000803e3d6000fd5b5050505050505050505050565b600c805482908110610a9f57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815293509091830182828015610b305780601f10610b0557610100808354040283529160200191610b30565b820191906000526020600020905b815481529060010190602001808311610b1357829003601f168201915b505050505081565b600e54600160a060020a031681565b600954600160a060020a031681565b600b805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610b305780601f10610b0557610100808354040283529160200191610b30565b600d5481565b600a54600160a060020a031681565b600854600160a060020a03163314610c2a576040805160e560020a62461bcd028152602060048201526033602482015260008051602061122c833981519152604482015260008051602061120c833981519152606482015290519081900360840190fd5b6000600160a060020a0316600f856040518082805190602001908083835b60208310610c675780518252601f199092019160209182019101610c48565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a0316929092149150610cf89050576040805160e560020a62461bcd02815260206004820181905260248201527f5468652063757272656e74206576656e7420616c726561647920657869737473604482015290519081900360640190fd5b60006060600a60009054906101000a9004600160a060020a0316600160a060020a03168686868660405160240180806020018060200180602001858152602001848103845288818151815260200191508051906020019080838360005b83811015610d6d578181015183820152602001610d55565b50505050905090810190601f168015610d9a5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015610dcd578181015183820152602001610db5565b50505050905090810190601f168015610dfa5780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b83811015610e2d578181015183820152602001610e15565b50505050905090810190601f168015610e5a5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e060020a63f776d03b0217815290518251929a509850889750955093508392508591508490505b60208310610ec15780518252601f199092019160209182019101610ea2565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610f21576040519150601f19603f3d011682016040523d82523d6000602084013e610f26565b606091505b5091509150811515610f9a576040805160e560020a62461bcd02815260206004820152602c60248201527f4572726f72207768696c65206465706c6f79696e67206576656e742066726f6d604482015260a060020a6b20636572746966696361746502606482015290519081900360840190fd5b610fa38161116c565b600f876040518082805190602001908083835b60208310610fd55780518252601f199092019160209182019101610fb6565b51815160209384036101000a60001901801990921691161790529201948552506040519384900381019093208054600160a060020a031916600160a060020a03959095169490941790935550600c8054600181018083556000929092528951919350611069927fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c790910191908a0190611173565b5050505050505050565b600080600160a060020a0316600f836040518082805190602001908083835b602083106110b15780518252601f199092019160209182019101611092565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a0316929092141591506110fb905057506000611167565b600f826040518082805190602001908083835b6020831061112d5780518252601f19909201916020918201910161110e565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a0316925050505b919050565b6020015190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106111b457805160ff19168380011785556111e1565b828001600101855582156111e1579182015b828111156111e15782518255916020019190600101906111c6565b506111ed9291506111f1565b5090565b6106fc91905b808211156111ed57600081556001016111f756fe706572666f726d207468697320616374696f6e000000000000000000000000004f6e6c7920436572746966696564456d61696c206163636f756e742063616e20a165627a7a723058209fc69d8710b708906b92eaf71c8591883146de34d1ae0e072c4a4fef3ada626e0029",
  "sourceMap": "222:2940:1:-;;;533:217;8:9:-1;5:2;;;30:1;27;20:12;5:2;533:217:1;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;533:217:1;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;-1:-1;;533:217:1;;;;;645:18;;533:217;;-1:-1:-1;533:217:1;-1:-1:-1;645:18:1;;:2;;:18;;;;;:::i;:::-;-1:-1:-1;673:8:1;:33;;-1:-1:-1;;;;;673:33:1;;;-1:-1:-1;;;;;;673:33:1;;;;;;716:14;:27;;;;;733:10;716:27;;;-1:-1:-1;222:2940:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;222:2940:1;;;-1:-1:-1;222:2940:1;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "222:2940:1:-;;;;;;;;-1:-1:-1;;;222:2940:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;951:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;951:222:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;951:222:1;;-1:-1:-1;;;;;951:222:1;;;;;;;;;3041:119;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3041:119:1;;;;;;;;;;;;;;;;;;;;273:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;273:29:1;;;;;;;;-1:-1:-1;;;;;273:29:1;;;;;;;;;;;;;;1179:737;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1179:737:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1179:737:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1179:737:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1179:737:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1179:737:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1179:737:1;;;;;;;;-1:-1:-1;1179:737:1;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1179:737:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1179:737:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1179:737:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1179:737:1;;;;;;;;-1:-1:-1;1179:737:1;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1179:737:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1179:737:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1179:737:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1179:737:1;;-1:-1:-1;;1179:737:1;;;-1:-1:-1;;;1179:737:1;;;;;387:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;387:24:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;387:24:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;387:24:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;446:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;446:25:1;;;;308:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;308:20:1;;;;364:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;364:16:1;;;;418:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;418:21:1;;;;334:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;334:23:1;;;;1922:874;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1922:874:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1922:874:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1922:874:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1922:874:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1922:874:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1922:874:1;;;;;;;;-1:-1:-1;1922:874:1;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1922:874:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1922:874:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1922:874:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1922:874:1;;;;;;;;-1:-1:-1;1922:874:1;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1922:874:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1922:874:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1922:874:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1922:874:1;;-1:-1:-1;;1922:874:1;;;-1:-1:-1;1922:874:1;;-1:-1:-1;;1922:874:1;2802:233;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2802:233:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2802:233:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2802:233:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2802:233:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2802:233:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2802:233:1;;-1:-1:-1;2802:233:1;;-1:-1:-1;;;;;2802:233:1;951:222;835:14;;-1:-1:-1;;;;;835:14:1;821:10;:28;800:126;;;;;-1:-1:-1;;;;;800:126:1;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;800:126:1;;;;-1:-1:-1;;;;;;;;;;;800:126:1;;;;;;;;;;;;;;;1100:5;:24;;-1:-1:-1;;;;;;1100:24:1;-1:-1:-1;;;;;1100:24:1;;;;;;;;;;;1134:9;:32;951:222::o;3041:119::-;3138:8;:15;3041:119;;:::o;273:29::-;;;-1:-1:-1;;;;;273:29:1;;:::o;1179:737::-;835:14;;-1:-1:-1;;;;;835:14:1;821:10;:28;800:126;;;;;-1:-1:-1;;;;;800:126:1;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;800:126:1;;;;-1:-1:-1;;;;;;;;;;;800:126:1;;;;;;;;;;;;;;;1452:8;;1487:99;;;;;;;;;;;;;;;;;-1:-1:-1;;1425:23:1;;-1:-1:-1;;;;;1452:8:1;;;;1487:99;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1487:99:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1487:99:1;;;-1:-1:-1;;26:21;;;22:32;6:49;;1487:99:1;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;1452:144:1;;;;1487:99;;-1:-1:-1;1452:144:1;-1:-1:-1;1452:144:1;;-1:-1:-1;25:18;1452:144:1;;25:18:-1;36:153;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1452:144:1;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1410:186:1;;;;1628:7;1607:97;;;;;;;-1:-1:-1;;;;;1607:97:1;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1607:97:1;;;;;;;;;;;;;;;1736:33;1758:10;1736:21;:33::i;:::-;1715:4;:55;;-1:-1:-1;;;;;;1715:55:1;-1:-1:-1;;;;;1715:55:1;;;;;;;;1781:128;;-1:-1:-1;;;;;1781:128:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:4;;;;;:9;;:128;;1834:8;;1781:128;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1781:128:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1781:128:1;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1781:128:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1781:128:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1781:128:1;;;;937:1;;1179:737;;;;;:::o;387:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;387:24:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;387:24:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;446:25::-;;;-1:-1:-1;;;;;446:25:1;;:::o;308:20::-;;;-1:-1:-1;;;;;308:20:1;;:::o;364:16::-;;;;;;;;;;;;;;;-1:-1:-1;;364:16:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;418:21;;;;:::o;334:23::-;;;-1:-1:-1;;;;;334:23:1;;:::o;1922:874::-;835:14;;-1:-1:-1;;;;;835:14:1;821:10;:28;800:126;;;;;-1:-1:-1;;;;;800:126:1;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;800:126:1;;;;-1:-1:-1;;;;;;;;;;;800:126:1;;;;;;;;;;;;;;;2169:15;;;;2197:1;;2169:6;;2176:7;;2169:15;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;2169:15:1;;;;;-1:-1:-1;2169:15:1;;;;;;;;;;;-1:-1:-1;;;;;2169:15:1;2161:38;;;;;-1:-1:-1;2140:117:1;;-1:-1:-1;2140:117:1;;;;-1:-1:-1;;;;;2140:117:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2269:12;2283:23;2310:8;;;;;;;;;-1:-1:-1;;;;;2310:8:1;-1:-1:-1;;;;;2310:21:1;2447:7;2472:9;2499:14;2531;2345:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2345:214:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2345:214:1;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2345:214:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2345:214:1;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2345:214:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2345:214:1;;;-1:-1:-1;;26:21;;;22:32;6:49;;2345:214:1;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;2310:259:1;;;;2345:214;;-1:-1:-1;2310:259:1;-1:-1:-1;2310:259:1;;-1:-1:-1;25:18;-1:-1;2310:259:1;-1:-1:-1;2310:259:1;;-1:-1:-1;2310:259:1;;-1:-1:-1;25:18;;-1:-1;36:153;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2310:259:1;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2268:301:1;;;;2601:7;2580:98;;;;;;;-1:-1:-1;;;;;2580:98:1;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2580:98:1;;;;;;;;;;;;;;;2722:33;2744:10;2722:21;:33::i;:::-;2689:6;2696:7;2689:15;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;2689:15:1;;;;;-1:-1:-1;2689:15:1;;;;;;;;;;;:67;;-1:-1:-1;;;;;;2689:67:1;-1:-1:-1;;;;;2689:67:1;;;;;;;;;;;-1:-1:-1;2767:8:1;27:10:-1;;-1:-1;23:18;;45:23;;;-1:-1;2767:22:1;;;;;;23:18:-1;;-1:-1;2767:22:1;;;;;;;;;;;;:::i;:::-;;;937:1;;1922:874;;;;:::o;2802:233::-;2937:15;;;;2902:7;;;;2937:6;;2944:7;;2937:15;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;2937:15:1;;;;;-1:-1:-1;2937:15:1;;;;;;;;;;;-1:-1:-1;;;;;2937:15:1;2929:38;;;;2925:61;;-1:-1:-1;2925:61:1;;-1:-1:-1;2925:61:1;-1:-1:-1;2984:1:1;2969:17;;2925:61;3012:6;3019:7;3012:15;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;3012:15:1;;;;;-1:-1:-1;3012:15:1;;;;;;;;;;;-1:-1:-1;;;;;3012:15:1;;-1:-1:-1;;;2802:233:1;;;;:::o;46:290:31:-;259:4;247:17;241:24;;46:290::o;222:2940:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;222:2940:1;;;-1:-1:-1;222:2940:1;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;",
  "source": "pragma solidity <0.6.0;\n\n/*\nGas to deploy: 1.441.547\n*/\n\nimport \"./interfaces/CertificateInterface.sol\";\nimport \"./interfaces/FileInterface.sol\";\nimport \"./interfaces/EventInterface.sol\";\nimport \"./libraries/Utils.sol\";\n\n\ncontract Certificate is CertificateInterface {\n    address public certifiedEmail;\n    address public owner;\n    address public deployer;\n\n    string public id;\n\n    string[] public eventsId;\n\n    uint public createdAt;\n\n    FileInterface public file;\n\n    mapping(string => EventInterface) private events;\n\n    constructor(\n        string memory certificateId,\n        address certifiedEmailDeployer\n    ) public {\n        id = certificateId;\n        deployer = certifiedEmailDeployer;\n        certifiedEmail = msg.sender;\n    }\n\n    modifier certifiedEmailModifier() {\n        require(\n            msg.sender == certifiedEmail,\n            \"Only CertifiedEmail account can perform this action\"\n        );\n\n        _;\n    }\n\n    function init(\n        address certificateOwner,\n        uint certificateCreatedAt\n    )\n        public\n        certifiedEmailModifier\n    {\n        owner = certificateOwner;\n        createdAt = certificateCreatedAt;\n    }\n\n    function createFile(\n        string memory fileHash,\n        string memory fileId,\n        string memory fileName,\n        uint fileCreatedAt,\n        uint fileSize\n    )\n        public\n        certifiedEmailModifier\n    {\n        (bool success, bytes memory returnData) = deployer.delegatecall(\n            abi.encodeWithSignature(\n                \"deployFile(string)\",\n                fileId\n            )\n        );\n\n        require(\n            success,\n            \"Error while deploying file from certificate\"\n        );\n\n        file = FileInterface(Utils._bytesToAddress(returnData));\n\n        file.init(\n                fileName,\n                fileHash,\n                fileCreatedAt,\n                fileSize\n        );\n    }\n\n    function createEvent(\n        string memory eventId,\n        string memory eventType,\n        string memory eventUserAgent,\n        uint eventCreatedAt\n    )\n        public\n        certifiedEmailModifier\n    {\n        require(\n            address(events[eventId]) == address(0),\n            \"The current event already exists\"\n        );\n\n        (bool success, bytes memory returnData) = deployer.delegatecall(\n            abi.encodeWithSignature(\n                \"deployEvent(string,string,string,uint256)\",\n                eventId,\n                eventType,\n                eventUserAgent,\n                eventCreatedAt\n            )\n        );\n\n        require(\n            success,\n            \"Error while deploying event from certificate\"\n        );\n\n        events[eventId] = EventInterface(Utils._bytesToAddress(returnData));\n\n        eventsId.push(eventId);\n    }\n\n    function getEvent(\n        string memory eventId\n    )\n        public\n        view\n        returns (address)\n    {\n        if (address(events[eventId]) == address(0)) return address(0);\n\n        return address(events[eventId]);\n    }\n\n    function getEventsSize()\n        public\n        view\n        returns (uint)\n    {\n        return eventsId.length;\n    }\n}\n",
  "sourcePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/Certificate.sol",
  "ast": {
    "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/Certificate.sol",
    "exportedSymbols": {
      "Certificate": [
        303
      ]
    },
    "id": 304,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 72,
        "literals": [
          "solidity",
          "<",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:1"
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/CertificateInterface.sol",
        "file": "./interfaces/CertificateInterface.sol",
        "id": 73,
        "nodeType": "ImportDirective",
        "scope": 304,
        "sourceUnit": 6589,
        "src": "57:47:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/FileInterface.sol",
        "file": "./interfaces/FileInterface.sol",
        "id": 74,
        "nodeType": "ImportDirective",
        "scope": 304,
        "sourceUnit": 6918,
        "src": "105:40:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/EventInterface.sol",
        "file": "./interfaces/EventInterface.sol",
        "id": 75,
        "nodeType": "ImportDirective",
        "scope": 304,
        "sourceUnit": 6892,
        "src": "146:41:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/libraries/Utils.sol",
        "file": "./libraries/Utils.sol",
        "id": 76,
        "nodeType": "ImportDirective",
        "scope": 304,
        "sourceUnit": 7290,
        "src": "188:31:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 77,
              "name": "CertificateInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6588,
              "src": "246:20:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CertificateInterface_$6588",
                "typeString": "contract CertificateInterface"
              }
            },
            "id": 78,
            "nodeType": "InheritanceSpecifier",
            "src": "246:20:1"
          }
        ],
        "contractDependencies": [
          6588
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 303,
        "linearizedBaseContracts": [
          303,
          6588
        ],
        "name": "Certificate",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 80,
            "name": "certifiedEmail",
            "nodeType": "VariableDeclaration",
            "scope": 303,
            "src": "273:29:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 79,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "273:7:1",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 82,
            "name": "owner",
            "nodeType": "VariableDeclaration",
            "scope": 303,
            "src": "308:20:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 81,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "308:7:1",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 84,
            "name": "deployer",
            "nodeType": "VariableDeclaration",
            "scope": 303,
            "src": "334:23:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 83,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "334:7:1",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 86,
            "name": "id",
            "nodeType": "VariableDeclaration",
            "scope": 303,
            "src": "364:16:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 85,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "364:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 89,
            "name": "eventsId",
            "nodeType": "VariableDeclaration",
            "scope": 303,
            "src": "387:24:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
              "typeString": "string[]"
            },
            "typeName": {
              "baseType": {
                "id": 87,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "387:6:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "id": 88,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "387:8:1",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                "typeString": "string[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 91,
            "name": "createdAt",
            "nodeType": "VariableDeclaration",
            "scope": 303,
            "src": "418:21:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 90,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "418:4:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 93,
            "name": "file",
            "nodeType": "VariableDeclaration",
            "scope": 303,
            "src": "446:25:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_FileInterface_$6917",
              "typeString": "contract FileInterface"
            },
            "typeName": {
              "contractScope": null,
              "id": 92,
              "name": "FileInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6917,
              "src": "446:13:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_FileInterface_$6917",
                "typeString": "contract FileInterface"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 97,
            "name": "events",
            "nodeType": "VariableDeclaration",
            "scope": 303,
            "src": "478:48:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
              "typeString": "mapping(string => contract EventInterface)"
            },
            "typeName": {
              "id": 96,
              "keyType": {
                "id": 94,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "486:6:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "nodeType": "Mapping",
              "src": "478:33:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                "typeString": "mapping(string => contract EventInterface)"
              },
              "valueType": {
                "contractScope": null,
                "id": 95,
                "name": "EventInterface",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 6891,
                "src": "496:14:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_EventInterface_$6891",
                  "typeString": "contract EventInterface"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 117,
              "nodeType": "Block",
              "src": "635:115:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 106,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 104,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 86,
                      "src": "645:2:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 105,
                      "name": "certificateId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 99,
                      "src": "650:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "645:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 107,
                  "nodeType": "ExpressionStatement",
                  "src": "645:18:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 110,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 108,
                      "name": "deployer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 84,
                      "src": "673:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 109,
                      "name": "certifiedEmailDeployer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 101,
                      "src": "684:22:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "673:33:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 111,
                  "nodeType": "ExpressionStatement",
                  "src": "673:33:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 115,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 112,
                      "name": "certifiedEmail",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 80,
                      "src": "716:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 113,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7304,
                        "src": "733:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 114,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "733:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "716:27:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 116,
                  "nodeType": "ExpressionStatement",
                  "src": "716:27:1"
                }
              ]
            },
            "documentation": null,
            "id": 118,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 102,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 99,
                  "name": "certificateId",
                  "nodeType": "VariableDeclaration",
                  "scope": 118,
                  "src": "554:27:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 98,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "554:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 101,
                  "name": "certifiedEmailDeployer",
                  "nodeType": "VariableDeclaration",
                  "scope": 118,
                  "src": "591:30:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 100,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "591:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "544:83:1"
            },
            "returnParameters": {
              "id": 103,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "635:0:1"
            },
            "scope": 303,
            "src": "533:217:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 129,
              "nodeType": "Block",
              "src": "790:155:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 121,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7304,
                            "src": "821:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "821:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 123,
                          "name": "certifiedEmail",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 80,
                          "src": "835:14:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "821:28:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c7920436572746966696564456d61696c206163636f756e742063616e20706572666f726d207468697320616374696f6e",
                        "id": 125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "863:53:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_51b89452d90a3b8d28d9a0c70ed2617d1ae39c46ae26a5ff4885b3541e76004d",
                          "typeString": "literal_string \"Only CertifiedEmail account can perform this action\""
                        },
                        "value": "Only CertifiedEmail account can perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_51b89452d90a3b8d28d9a0c70ed2617d1ae39c46ae26a5ff4885b3541e76004d",
                          "typeString": "literal_string \"Only CertifiedEmail account can perform this action\""
                        }
                      ],
                      "id": 120,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "800:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "800:126:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 127,
                  "nodeType": "ExpressionStatement",
                  "src": "800:126:1"
                },
                {
                  "id": 128,
                  "nodeType": "PlaceholderStatement",
                  "src": "937:1:1"
                }
              ]
            },
            "documentation": null,
            "id": 130,
            "name": "certifiedEmailModifier",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 119,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "787:2:1"
            },
            "src": "756:189:1",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 147,
              "nodeType": "Block",
              "src": "1090:83:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 141,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 139,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 82,
                      "src": "1100:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 140,
                      "name": "certificateOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 132,
                      "src": "1108:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1100:24:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 142,
                  "nodeType": "ExpressionStatement",
                  "src": "1100:24:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 145,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 143,
                      "name": "createdAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 91,
                      "src": "1134:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 144,
                      "name": "certificateCreatedAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 134,
                      "src": "1146:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1134:32:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 146,
                  "nodeType": "ExpressionStatement",
                  "src": "1134:32:1"
                }
              ]
            },
            "documentation": null,
            "id": 148,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 137,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 136,
                  "name": "certifiedEmailModifier",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 130,
                  "src": "1063:22:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1063:22:1"
              }
            ],
            "name": "init",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 135,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 132,
                  "name": "certificateOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 148,
                  "src": "974:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 131,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "974:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 134,
                  "name": "certificateCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 148,
                  "src": "1008:25:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 133,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1008:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "964:75:1"
            },
            "returnParameters": {
              "id": 138,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1090:0:1"
            },
            "scope": 303,
            "src": "951:222:1",
            "stateMutability": "nonpayable",
            "superFunction": 6551,
            "visibility": "public"
          },
          {
            "body": {
              "id": 199,
              "nodeType": "Block",
              "src": "1400:516:1",
              "statements": [
                {
                  "assignments": [
                    164,
                    166
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 164,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 199,
                      "src": "1411:12:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 163,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1411:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 166,
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 199,
                      "src": "1425:23:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 165,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1425:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 175,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "6465706c6f7946696c6528737472696e6729",
                            "id": 171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1528:20:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a917101201e7b37e2182b00cd3d4f57fad02daf7b58b19371b9ac481c9b2b5f3",
                              "typeString": "literal_string \"deployFile(string)\""
                            },
                            "value": "deployFile(string)"
                          },
                          {
                            "argumentTypes": null,
                            "id": 172,
                            "name": "fileId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 152,
                            "src": "1566:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a917101201e7b37e2182b00cd3d4f57fad02daf7b58b19371b9ac481c9b2b5f3",
                              "typeString": "literal_string \"deployFile(string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 169,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7291,
                            "src": "1487:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1487:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 173,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1487:99:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 167,
                        "name": "deployer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 84,
                        "src": "1452:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 168,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "delegatecall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1452:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) returns (bool,bytes memory)"
                      }
                    },
                    "id": 174,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1452:144:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1410:186:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 177,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 164,
                        "src": "1628:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4572726f72207768696c65206465706c6f79696e672066696c652066726f6d206365727469666963617465",
                        "id": 178,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1649:45:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5c97e63eb301a71c89836744233d0462ca647f2b7b0403d321bba560ab8324f4",
                          "typeString": "literal_string \"Error while deploying file from certificate\""
                        },
                        "value": "Error while deploying file from certificate"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5c97e63eb301a71c89836744233d0462ca647f2b7b0403d321bba560ab8324f4",
                          "typeString": "literal_string \"Error while deploying file from certificate\""
                        }
                      ],
                      "id": 176,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "1607:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 179,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1607:97:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 180,
                  "nodeType": "ExpressionStatement",
                  "src": "1607:97:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 188,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 181,
                      "name": "file",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 93,
                      "src": "1715:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FileInterface_$6917",
                        "typeString": "contract FileInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 185,
                              "name": "returnData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 166,
                              "src": "1758:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 183,
                              "name": "Utils",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7289,
                              "src": "1736:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                                "typeString": "type(library Utils)"
                              }
                            },
                            "id": 184,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_bytesToAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7273,
                            "src": "1736:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (bytes memory) pure returns (address)"
                            }
                          },
                          "id": 186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1736:33:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 182,
                        "name": "FileInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6917,
                        "src": "1722:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_FileInterface_$6917_$",
                          "typeString": "type(contract FileInterface)"
                        }
                      },
                      "id": 187,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1722:48:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FileInterface_$6917",
                        "typeString": "contract FileInterface"
                      }
                    },
                    "src": "1715:55:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FileInterface_$6917",
                      "typeString": "contract FileInterface"
                    }
                  },
                  "id": 189,
                  "nodeType": "ExpressionStatement",
                  "src": "1715:55:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 193,
                        "name": "fileName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 154,
                        "src": "1808:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 194,
                        "name": "fileHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 150,
                        "src": "1834:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 195,
                        "name": "fileCreatedAt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 156,
                        "src": "1860:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 196,
                        "name": "fileSize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 158,
                        "src": "1891:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 190,
                        "name": "file",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 93,
                        "src": "1781:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_FileInterface_$6917",
                          "typeString": "contract FileInterface"
                        }
                      },
                      "id": 192,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "init",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6916,
                      "src": "1781:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,string memory,uint256,uint256) external"
                      }
                    },
                    "id": 197,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1781:128:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 198,
                  "nodeType": "ExpressionStatement",
                  "src": "1781:128:1"
                }
              ]
            },
            "documentation": null,
            "id": 200,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 161,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 160,
                  "name": "certifiedEmailModifier",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 130,
                  "src": "1373:22:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1373:22:1"
              }
            ],
            "name": "createFile",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 159,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 150,
                  "name": "fileHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 200,
                  "src": "1208:22:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 149,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1208:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 152,
                  "name": "fileId",
                  "nodeType": "VariableDeclaration",
                  "scope": 200,
                  "src": "1240:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 151,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1240:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 154,
                  "name": "fileName",
                  "nodeType": "VariableDeclaration",
                  "scope": 200,
                  "src": "1270:22:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 153,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1270:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 156,
                  "name": "fileCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 200,
                  "src": "1302:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 155,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1302:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 158,
                  "name": "fileSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 200,
                  "src": "1330:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 157,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1330:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1198:151:1"
            },
            "returnParameters": {
              "id": 162,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1400:0:1"
            },
            "scope": 303,
            "src": "1179:737:1",
            "stateMutability": "nonpayable",
            "superFunction": 6564,
            "visibility": "public"
          },
          {
            "body": {
              "id": 264,
              "nodeType": "Block",
              "src": "2130:666:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 222,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 215,
                                "name": "events",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 97,
                                "src": "2169:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                                  "typeString": "mapping(string memory => contract EventInterface)"
                                }
                              },
                              "id": 217,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 216,
                                "name": "eventId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 202,
                                "src": "2176:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2169:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EventInterface_$6891",
                                "typeString": "contract EventInterface"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EventInterface_$6891",
                                "typeString": "contract EventInterface"
                              }
                            ],
                            "id": 214,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2161:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2161:24:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 220,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2197:1:1",
                              "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": 219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2189:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2189:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "2161:38:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5468652063757272656e74206576656e7420616c726561647920657869737473",
                        "id": 223,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2213:34:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d7245dc33948221e3b2826da0eb4efb2daeee93d525a59b7f820270746afec26",
                          "typeString": "literal_string \"The current event already exists\""
                        },
                        "value": "The current event already exists"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d7245dc33948221e3b2826da0eb4efb2daeee93d525a59b7f820270746afec26",
                          "typeString": "literal_string \"The current event already exists\""
                        }
                      ],
                      "id": 213,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "2140:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 224,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2140:117:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 225,
                  "nodeType": "ExpressionStatement",
                  "src": "2140:117:1"
                },
                {
                  "assignments": [
                    227,
                    229
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 227,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 264,
                      "src": "2269:12:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 226,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2269:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 229,
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 264,
                      "src": "2283:23:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 228,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2283:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 241,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "6465706c6f794576656e7428737472696e672c737472696e672c737472696e672c75696e7432353629",
                            "id": 234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2386:43:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f776d03bae68533a22110763a47f66d6a1059f4f873fd364dad87b62f453c956",
                              "typeString": "literal_string \"deployEvent(string,string,string,uint256)\""
                            },
                            "value": "deployEvent(string,string,string,uint256)"
                          },
                          {
                            "argumentTypes": null,
                            "id": 235,
                            "name": "eventId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 202,
                            "src": "2447:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 236,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 204,
                            "src": "2472:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 237,
                            "name": "eventUserAgent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 206,
                            "src": "2499:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 238,
                            "name": "eventCreatedAt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 208,
                            "src": "2531:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f776d03bae68533a22110763a47f66d6a1059f4f873fd364dad87b62f453c956",
                              "typeString": "literal_string \"deployEvent(string,string,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 232,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7291,
                            "src": "2345:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2345:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 239,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2345:214:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 230,
                        "name": "deployer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 84,
                        "src": "2310:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 231,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "delegatecall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2310:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) returns (bool,bytes memory)"
                      }
                    },
                    "id": 240,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2310:259:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2268:301:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 243,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 227,
                        "src": "2601:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4572726f72207768696c65206465706c6f79696e67206576656e742066726f6d206365727469666963617465",
                        "id": 244,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2622:46:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1f5f7f67f6524d08cc7dfe4fe32493b144232386f1b82cc6a115a97c15e18a9f",
                          "typeString": "literal_string \"Error while deploying event from certificate\""
                        },
                        "value": "Error while deploying event from certificate"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1f5f7f67f6524d08cc7dfe4fe32493b144232386f1b82cc6a115a97c15e18a9f",
                          "typeString": "literal_string \"Error while deploying event from certificate\""
                        }
                      ],
                      "id": 242,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "2580:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 245,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2580:98:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 246,
                  "nodeType": "ExpressionStatement",
                  "src": "2580:98:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 247,
                        "name": "events",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 97,
                        "src": "2689:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                          "typeString": "mapping(string memory => contract EventInterface)"
                        }
                      },
                      "id": 249,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 248,
                        "name": "eventId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 202,
                        "src": "2696:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2689:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EventInterface_$6891",
                        "typeString": "contract EventInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 253,
                              "name": "returnData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 229,
                              "src": "2744:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 251,
                              "name": "Utils",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7289,
                              "src": "2722:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                                "typeString": "type(library Utils)"
                              }
                            },
                            "id": 252,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_bytesToAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7273,
                            "src": "2722:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (bytes memory) pure returns (address)"
                            }
                          },
                          "id": 254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2722:33:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 250,
                        "name": "EventInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6891,
                        "src": "2707:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_EventInterface_$6891_$",
                          "typeString": "type(contract EventInterface)"
                        }
                      },
                      "id": 255,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2707:49:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EventInterface_$6891",
                        "typeString": "contract EventInterface"
                      }
                    },
                    "src": "2689:67:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EventInterface_$6891",
                      "typeString": "contract EventInterface"
                    }
                  },
                  "id": 257,
                  "nodeType": "ExpressionStatement",
                  "src": "2689:67:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 261,
                        "name": "eventId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 202,
                        "src": "2781:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 258,
                        "name": "eventsId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 89,
                        "src": "2767:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 260,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2767:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$_t_uint256_$",
                        "typeString": "function (string storage ref) returns (uint256)"
                      }
                    },
                    "id": 262,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2767:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 263,
                  "nodeType": "ExpressionStatement",
                  "src": "2767:22:1"
                }
              ]
            },
            "documentation": null,
            "id": 265,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 211,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 210,
                  "name": "certifiedEmailModifier",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 130,
                  "src": "2103:22:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2103:22:1"
              }
            ],
            "name": "createEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 209,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 202,
                  "name": "eventId",
                  "nodeType": "VariableDeclaration",
                  "scope": 265,
                  "src": "1952:21:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 201,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1952:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 204,
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "scope": 265,
                  "src": "1983:23:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 203,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1983:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 206,
                  "name": "eventUserAgent",
                  "nodeType": "VariableDeclaration",
                  "scope": 265,
                  "src": "2016:28:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 205,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2016:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 208,
                  "name": "eventCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 265,
                  "src": "2054:19:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 207,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2054:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1942:137:1"
            },
            "returnParameters": {
              "id": 212,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2130:0:1"
            },
            "scope": 303,
            "src": "1922:874:1",
            "stateMutability": "nonpayable",
            "superFunction": 6575,
            "visibility": "public"
          },
          {
            "body": {
              "id": 292,
              "nodeType": "Block",
              "src": "2915:120:1",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 280,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 273,
                            "name": "events",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 97,
                            "src": "2937:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                              "typeString": "mapping(string memory => contract EventInterface)"
                            }
                          },
                          "id": 275,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 274,
                            "name": "eventId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 267,
                            "src": "2944:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2937:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EventInterface_$6891",
                            "typeString": "contract EventInterface"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_EventInterface_$6891",
                            "typeString": "contract EventInterface"
                          }
                        ],
                        "id": 272,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2929:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 276,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2929:24:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2965:1:1",
                          "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": 277,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2957:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 279,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2957:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2929:38:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 285,
                  "nodeType": "IfStatement",
                  "src": "2925:61:1",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2984:1:1",
                          "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": 281,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2976:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 283,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2976:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "functionReturnParameters": 271,
                    "id": 284,
                    "nodeType": "Return",
                    "src": "2969:17:1"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 287,
                          "name": "events",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 97,
                          "src": "3012:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                            "typeString": "mapping(string memory => contract EventInterface)"
                          }
                        },
                        "id": 289,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 288,
                          "name": "eventId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 267,
                          "src": "3019:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3012:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EventInterface_$6891",
                          "typeString": "contract EventInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_EventInterface_$6891",
                          "typeString": "contract EventInterface"
                        }
                      ],
                      "id": 286,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3004:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3004:24:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 271,
                  "id": 291,
                  "nodeType": "Return",
                  "src": "2997:31:1"
                }
              ]
            },
            "documentation": null,
            "id": 293,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 268,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 267,
                  "name": "eventId",
                  "nodeType": "VariableDeclaration",
                  "scope": 293,
                  "src": "2829:21:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 266,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2829:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2819:37:1"
            },
            "returnParameters": {
              "id": 271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 270,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 293,
                  "src": "2902:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 269,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2902:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2901:9:1"
            },
            "scope": 303,
            "src": "2802:233:1",
            "stateMutability": "view",
            "superFunction": 6582,
            "visibility": "public"
          },
          {
            "body": {
              "id": 301,
              "nodeType": "Block",
              "src": "3121:39:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 298,
                      "name": "eventsId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 89,
                      "src": "3138:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                        "typeString": "string storage ref[] storage ref"
                      }
                    },
                    "id": 299,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "3138:15:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 297,
                  "id": 300,
                  "nodeType": "Return",
                  "src": "3131:22:1"
                }
              ]
            },
            "documentation": null,
            "id": 302,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEventsSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3063:2:1"
            },
            "returnParameters": {
              "id": 297,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 296,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 302,
                  "src": "3111:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 295,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3111:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3110:6:1"
            },
            "scope": 303,
            "src": "3041:119:1",
            "stateMutability": "view",
            "superFunction": 6587,
            "visibility": "public"
          }
        ],
        "scope": 304,
        "src": "222:2940:1"
      }
    ],
    "src": "0:3163:1"
  },
  "legacyAST": {
    "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/Certificate.sol",
    "exportedSymbols": {
      "Certificate": [
        303
      ]
    },
    "id": 304,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 72,
        "literals": [
          "solidity",
          "<",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:1"
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/CertificateInterface.sol",
        "file": "./interfaces/CertificateInterface.sol",
        "id": 73,
        "nodeType": "ImportDirective",
        "scope": 304,
        "sourceUnit": 6589,
        "src": "57:47:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/FileInterface.sol",
        "file": "./interfaces/FileInterface.sol",
        "id": 74,
        "nodeType": "ImportDirective",
        "scope": 304,
        "sourceUnit": 6918,
        "src": "105:40:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/EventInterface.sol",
        "file": "./interfaces/EventInterface.sol",
        "id": 75,
        "nodeType": "ImportDirective",
        "scope": 304,
        "sourceUnit": 6892,
        "src": "146:41:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/libraries/Utils.sol",
        "file": "./libraries/Utils.sol",
        "id": 76,
        "nodeType": "ImportDirective",
        "scope": 304,
        "sourceUnit": 7290,
        "src": "188:31:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 77,
              "name": "CertificateInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6588,
              "src": "246:20:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CertificateInterface_$6588",
                "typeString": "contract CertificateInterface"
              }
            },
            "id": 78,
            "nodeType": "InheritanceSpecifier",
            "src": "246:20:1"
          }
        ],
        "contractDependencies": [
          6588
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 303,
        "linearizedBaseContracts": [
          303,
          6588
        ],
        "name": "Certificate",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 80,
            "name": "certifiedEmail",
            "nodeType": "VariableDeclaration",
            "scope": 303,
            "src": "273:29:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 79,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "273:7:1",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 82,
            "name": "owner",
            "nodeType": "VariableDeclaration",
            "scope": 303,
            "src": "308:20:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 81,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "308:7:1",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 84,
            "name": "deployer",
            "nodeType": "VariableDeclaration",
            "scope": 303,
            "src": "334:23:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 83,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "334:7:1",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 86,
            "name": "id",
            "nodeType": "VariableDeclaration",
            "scope": 303,
            "src": "364:16:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 85,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "364:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 89,
            "name": "eventsId",
            "nodeType": "VariableDeclaration",
            "scope": 303,
            "src": "387:24:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
              "typeString": "string[]"
            },
            "typeName": {
              "baseType": {
                "id": 87,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "387:6:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "id": 88,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "387:8:1",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                "typeString": "string[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 91,
            "name": "createdAt",
            "nodeType": "VariableDeclaration",
            "scope": 303,
            "src": "418:21:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 90,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "418:4:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 93,
            "name": "file",
            "nodeType": "VariableDeclaration",
            "scope": 303,
            "src": "446:25:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_FileInterface_$6917",
              "typeString": "contract FileInterface"
            },
            "typeName": {
              "contractScope": null,
              "id": 92,
              "name": "FileInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6917,
              "src": "446:13:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_FileInterface_$6917",
                "typeString": "contract FileInterface"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 97,
            "name": "events",
            "nodeType": "VariableDeclaration",
            "scope": 303,
            "src": "478:48:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
              "typeString": "mapping(string => contract EventInterface)"
            },
            "typeName": {
              "id": 96,
              "keyType": {
                "id": 94,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "486:6:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "nodeType": "Mapping",
              "src": "478:33:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                "typeString": "mapping(string => contract EventInterface)"
              },
              "valueType": {
                "contractScope": null,
                "id": 95,
                "name": "EventInterface",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 6891,
                "src": "496:14:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_EventInterface_$6891",
                  "typeString": "contract EventInterface"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 117,
              "nodeType": "Block",
              "src": "635:115:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 106,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 104,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 86,
                      "src": "645:2:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 105,
                      "name": "certificateId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 99,
                      "src": "650:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "645:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 107,
                  "nodeType": "ExpressionStatement",
                  "src": "645:18:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 110,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 108,
                      "name": "deployer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 84,
                      "src": "673:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 109,
                      "name": "certifiedEmailDeployer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 101,
                      "src": "684:22:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "673:33:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 111,
                  "nodeType": "ExpressionStatement",
                  "src": "673:33:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 115,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 112,
                      "name": "certifiedEmail",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 80,
                      "src": "716:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 113,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7304,
                        "src": "733:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 114,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "733:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "716:27:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 116,
                  "nodeType": "ExpressionStatement",
                  "src": "716:27:1"
                }
              ]
            },
            "documentation": null,
            "id": 118,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 102,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 99,
                  "name": "certificateId",
                  "nodeType": "VariableDeclaration",
                  "scope": 118,
                  "src": "554:27:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 98,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "554:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 101,
                  "name": "certifiedEmailDeployer",
                  "nodeType": "VariableDeclaration",
                  "scope": 118,
                  "src": "591:30:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 100,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "591:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "544:83:1"
            },
            "returnParameters": {
              "id": 103,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "635:0:1"
            },
            "scope": 303,
            "src": "533:217:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 129,
              "nodeType": "Block",
              "src": "790:155:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 121,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7304,
                            "src": "821:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "821:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 123,
                          "name": "certifiedEmail",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 80,
                          "src": "835:14:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "821:28:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c7920436572746966696564456d61696c206163636f756e742063616e20706572666f726d207468697320616374696f6e",
                        "id": 125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "863:53:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_51b89452d90a3b8d28d9a0c70ed2617d1ae39c46ae26a5ff4885b3541e76004d",
                          "typeString": "literal_string \"Only CertifiedEmail account can perform this action\""
                        },
                        "value": "Only CertifiedEmail account can perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_51b89452d90a3b8d28d9a0c70ed2617d1ae39c46ae26a5ff4885b3541e76004d",
                          "typeString": "literal_string \"Only CertifiedEmail account can perform this action\""
                        }
                      ],
                      "id": 120,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "800:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "800:126:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 127,
                  "nodeType": "ExpressionStatement",
                  "src": "800:126:1"
                },
                {
                  "id": 128,
                  "nodeType": "PlaceholderStatement",
                  "src": "937:1:1"
                }
              ]
            },
            "documentation": null,
            "id": 130,
            "name": "certifiedEmailModifier",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 119,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "787:2:1"
            },
            "src": "756:189:1",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 147,
              "nodeType": "Block",
              "src": "1090:83:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 141,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 139,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 82,
                      "src": "1100:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 140,
                      "name": "certificateOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 132,
                      "src": "1108:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1100:24:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 142,
                  "nodeType": "ExpressionStatement",
                  "src": "1100:24:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 145,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 143,
                      "name": "createdAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 91,
                      "src": "1134:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 144,
                      "name": "certificateCreatedAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 134,
                      "src": "1146:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1134:32:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 146,
                  "nodeType": "ExpressionStatement",
                  "src": "1134:32:1"
                }
              ]
            },
            "documentation": null,
            "id": 148,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 137,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 136,
                  "name": "certifiedEmailModifier",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 130,
                  "src": "1063:22:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1063:22:1"
              }
            ],
            "name": "init",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 135,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 132,
                  "name": "certificateOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 148,
                  "src": "974:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 131,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "974:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 134,
                  "name": "certificateCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 148,
                  "src": "1008:25:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 133,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1008:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "964:75:1"
            },
            "returnParameters": {
              "id": 138,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1090:0:1"
            },
            "scope": 303,
            "src": "951:222:1",
            "stateMutability": "nonpayable",
            "superFunction": 6551,
            "visibility": "public"
          },
          {
            "body": {
              "id": 199,
              "nodeType": "Block",
              "src": "1400:516:1",
              "statements": [
                {
                  "assignments": [
                    164,
                    166
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 164,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 199,
                      "src": "1411:12:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 163,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1411:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 166,
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 199,
                      "src": "1425:23:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 165,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1425:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 175,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "6465706c6f7946696c6528737472696e6729",
                            "id": 171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1528:20:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a917101201e7b37e2182b00cd3d4f57fad02daf7b58b19371b9ac481c9b2b5f3",
                              "typeString": "literal_string \"deployFile(string)\""
                            },
                            "value": "deployFile(string)"
                          },
                          {
                            "argumentTypes": null,
                            "id": 172,
                            "name": "fileId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 152,
                            "src": "1566:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a917101201e7b37e2182b00cd3d4f57fad02daf7b58b19371b9ac481c9b2b5f3",
                              "typeString": "literal_string \"deployFile(string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 169,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7291,
                            "src": "1487:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1487:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 173,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1487:99:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 167,
                        "name": "deployer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 84,
                        "src": "1452:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 168,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "delegatecall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1452:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) returns (bool,bytes memory)"
                      }
                    },
                    "id": 174,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1452:144:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1410:186:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 177,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 164,
                        "src": "1628:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4572726f72207768696c65206465706c6f79696e672066696c652066726f6d206365727469666963617465",
                        "id": 178,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1649:45:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5c97e63eb301a71c89836744233d0462ca647f2b7b0403d321bba560ab8324f4",
                          "typeString": "literal_string \"Error while deploying file from certificate\""
                        },
                        "value": "Error while deploying file from certificate"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5c97e63eb301a71c89836744233d0462ca647f2b7b0403d321bba560ab8324f4",
                          "typeString": "literal_string \"Error while deploying file from certificate\""
                        }
                      ],
                      "id": 176,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "1607:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 179,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1607:97:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 180,
                  "nodeType": "ExpressionStatement",
                  "src": "1607:97:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 188,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 181,
                      "name": "file",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 93,
                      "src": "1715:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FileInterface_$6917",
                        "typeString": "contract FileInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 185,
                              "name": "returnData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 166,
                              "src": "1758:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 183,
                              "name": "Utils",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7289,
                              "src": "1736:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                                "typeString": "type(library Utils)"
                              }
                            },
                            "id": 184,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_bytesToAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7273,
                            "src": "1736:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (bytes memory) pure returns (address)"
                            }
                          },
                          "id": 186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1736:33:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 182,
                        "name": "FileInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6917,
                        "src": "1722:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_FileInterface_$6917_$",
                          "typeString": "type(contract FileInterface)"
                        }
                      },
                      "id": 187,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1722:48:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FileInterface_$6917",
                        "typeString": "contract FileInterface"
                      }
                    },
                    "src": "1715:55:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FileInterface_$6917",
                      "typeString": "contract FileInterface"
                    }
                  },
                  "id": 189,
                  "nodeType": "ExpressionStatement",
                  "src": "1715:55:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 193,
                        "name": "fileName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 154,
                        "src": "1808:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 194,
                        "name": "fileHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 150,
                        "src": "1834:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 195,
                        "name": "fileCreatedAt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 156,
                        "src": "1860:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 196,
                        "name": "fileSize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 158,
                        "src": "1891:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 190,
                        "name": "file",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 93,
                        "src": "1781:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_FileInterface_$6917",
                          "typeString": "contract FileInterface"
                        }
                      },
                      "id": 192,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "init",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6916,
                      "src": "1781:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,string memory,uint256,uint256) external"
                      }
                    },
                    "id": 197,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1781:128:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 198,
                  "nodeType": "ExpressionStatement",
                  "src": "1781:128:1"
                }
              ]
            },
            "documentation": null,
            "id": 200,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 161,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 160,
                  "name": "certifiedEmailModifier",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 130,
                  "src": "1373:22:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1373:22:1"
              }
            ],
            "name": "createFile",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 159,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 150,
                  "name": "fileHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 200,
                  "src": "1208:22:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 149,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1208:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 152,
                  "name": "fileId",
                  "nodeType": "VariableDeclaration",
                  "scope": 200,
                  "src": "1240:20:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 151,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1240:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 154,
                  "name": "fileName",
                  "nodeType": "VariableDeclaration",
                  "scope": 200,
                  "src": "1270:22:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 153,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1270:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 156,
                  "name": "fileCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 200,
                  "src": "1302:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 155,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1302:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 158,
                  "name": "fileSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 200,
                  "src": "1330:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 157,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1330:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1198:151:1"
            },
            "returnParameters": {
              "id": 162,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1400:0:1"
            },
            "scope": 303,
            "src": "1179:737:1",
            "stateMutability": "nonpayable",
            "superFunction": 6564,
            "visibility": "public"
          },
          {
            "body": {
              "id": 264,
              "nodeType": "Block",
              "src": "2130:666:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 222,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 215,
                                "name": "events",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 97,
                                "src": "2169:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                                  "typeString": "mapping(string memory => contract EventInterface)"
                                }
                              },
                              "id": 217,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 216,
                                "name": "eventId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 202,
                                "src": "2176:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2169:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EventInterface_$6891",
                                "typeString": "contract EventInterface"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EventInterface_$6891",
                                "typeString": "contract EventInterface"
                              }
                            ],
                            "id": 214,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2161:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2161:24:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 220,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2197:1:1",
                              "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": 219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2189:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2189:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "2161:38:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5468652063757272656e74206576656e7420616c726561647920657869737473",
                        "id": 223,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2213:34:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d7245dc33948221e3b2826da0eb4efb2daeee93d525a59b7f820270746afec26",
                          "typeString": "literal_string \"The current event already exists\""
                        },
                        "value": "The current event already exists"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d7245dc33948221e3b2826da0eb4efb2daeee93d525a59b7f820270746afec26",
                          "typeString": "literal_string \"The current event already exists\""
                        }
                      ],
                      "id": 213,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "2140:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 224,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2140:117:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 225,
                  "nodeType": "ExpressionStatement",
                  "src": "2140:117:1"
                },
                {
                  "assignments": [
                    227,
                    229
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 227,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 264,
                      "src": "2269:12:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 226,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2269:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 229,
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 264,
                      "src": "2283:23:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 228,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2283:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 241,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "6465706c6f794576656e7428737472696e672c737472696e672c737472696e672c75696e7432353629",
                            "id": 234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2386:43:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f776d03bae68533a22110763a47f66d6a1059f4f873fd364dad87b62f453c956",
                              "typeString": "literal_string \"deployEvent(string,string,string,uint256)\""
                            },
                            "value": "deployEvent(string,string,string,uint256)"
                          },
                          {
                            "argumentTypes": null,
                            "id": 235,
                            "name": "eventId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 202,
                            "src": "2447:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 236,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 204,
                            "src": "2472:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 237,
                            "name": "eventUserAgent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 206,
                            "src": "2499:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 238,
                            "name": "eventCreatedAt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 208,
                            "src": "2531:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f776d03bae68533a22110763a47f66d6a1059f4f873fd364dad87b62f453c956",
                              "typeString": "literal_string \"deployEvent(string,string,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 232,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7291,
                            "src": "2345:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2345:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 239,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2345:214:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 230,
                        "name": "deployer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 84,
                        "src": "2310:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 231,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "delegatecall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2310:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) returns (bool,bytes memory)"
                      }
                    },
                    "id": 240,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2310:259:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2268:301:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 243,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 227,
                        "src": "2601:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4572726f72207768696c65206465706c6f79696e67206576656e742066726f6d206365727469666963617465",
                        "id": 244,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2622:46:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1f5f7f67f6524d08cc7dfe4fe32493b144232386f1b82cc6a115a97c15e18a9f",
                          "typeString": "literal_string \"Error while deploying event from certificate\""
                        },
                        "value": "Error while deploying event from certificate"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1f5f7f67f6524d08cc7dfe4fe32493b144232386f1b82cc6a115a97c15e18a9f",
                          "typeString": "literal_string \"Error while deploying event from certificate\""
                        }
                      ],
                      "id": 242,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "2580:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 245,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2580:98:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 246,
                  "nodeType": "ExpressionStatement",
                  "src": "2580:98:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 247,
                        "name": "events",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 97,
                        "src": "2689:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                          "typeString": "mapping(string memory => contract EventInterface)"
                        }
                      },
                      "id": 249,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 248,
                        "name": "eventId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 202,
                        "src": "2696:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2689:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EventInterface_$6891",
                        "typeString": "contract EventInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 253,
                              "name": "returnData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 229,
                              "src": "2744:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 251,
                              "name": "Utils",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7289,
                              "src": "2722:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                                "typeString": "type(library Utils)"
                              }
                            },
                            "id": 252,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_bytesToAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7273,
                            "src": "2722:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (bytes memory) pure returns (address)"
                            }
                          },
                          "id": 254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2722:33:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 250,
                        "name": "EventInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6891,
                        "src": "2707:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_EventInterface_$6891_$",
                          "typeString": "type(contract EventInterface)"
                        }
                      },
                      "id": 255,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2707:49:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EventInterface_$6891",
                        "typeString": "contract EventInterface"
                      }
                    },
                    "src": "2689:67:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EventInterface_$6891",
                      "typeString": "contract EventInterface"
                    }
                  },
                  "id": 257,
                  "nodeType": "ExpressionStatement",
                  "src": "2689:67:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 261,
                        "name": "eventId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 202,
                        "src": "2781:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 258,
                        "name": "eventsId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 89,
                        "src": "2767:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 260,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2767:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$_t_uint256_$",
                        "typeString": "function (string storage ref) returns (uint256)"
                      }
                    },
                    "id": 262,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2767:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 263,
                  "nodeType": "ExpressionStatement",
                  "src": "2767:22:1"
                }
              ]
            },
            "documentation": null,
            "id": 265,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 211,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 210,
                  "name": "certifiedEmailModifier",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 130,
                  "src": "2103:22:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2103:22:1"
              }
            ],
            "name": "createEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 209,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 202,
                  "name": "eventId",
                  "nodeType": "VariableDeclaration",
                  "scope": 265,
                  "src": "1952:21:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 201,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1952:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 204,
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "scope": 265,
                  "src": "1983:23:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 203,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1983:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 206,
                  "name": "eventUserAgent",
                  "nodeType": "VariableDeclaration",
                  "scope": 265,
                  "src": "2016:28:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 205,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2016:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 208,
                  "name": "eventCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 265,
                  "src": "2054:19:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 207,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2054:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1942:137:1"
            },
            "returnParameters": {
              "id": 212,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2130:0:1"
            },
            "scope": 303,
            "src": "1922:874:1",
            "stateMutability": "nonpayable",
            "superFunction": 6575,
            "visibility": "public"
          },
          {
            "body": {
              "id": 292,
              "nodeType": "Block",
              "src": "2915:120:1",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 280,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 273,
                            "name": "events",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 97,
                            "src": "2937:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                              "typeString": "mapping(string memory => contract EventInterface)"
                            }
                          },
                          "id": 275,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 274,
                            "name": "eventId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 267,
                            "src": "2944:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2937:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EventInterface_$6891",
                            "typeString": "contract EventInterface"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_EventInterface_$6891",
                            "typeString": "contract EventInterface"
                          }
                        ],
                        "id": 272,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2929:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 276,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2929:24:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2965:1:1",
                          "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": 277,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2957:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 279,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2957:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2929:38:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 285,
                  "nodeType": "IfStatement",
                  "src": "2925:61:1",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2984:1:1",
                          "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": 281,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2976:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 283,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2976:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "functionReturnParameters": 271,
                    "id": 284,
                    "nodeType": "Return",
                    "src": "2969:17:1"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 287,
                          "name": "events",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 97,
                          "src": "3012:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                            "typeString": "mapping(string memory => contract EventInterface)"
                          }
                        },
                        "id": 289,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 288,
                          "name": "eventId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 267,
                          "src": "3019:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3012:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EventInterface_$6891",
                          "typeString": "contract EventInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_EventInterface_$6891",
                          "typeString": "contract EventInterface"
                        }
                      ],
                      "id": 286,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3004:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3004:24:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 271,
                  "id": 291,
                  "nodeType": "Return",
                  "src": "2997:31:1"
                }
              ]
            },
            "documentation": null,
            "id": 293,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 268,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 267,
                  "name": "eventId",
                  "nodeType": "VariableDeclaration",
                  "scope": 293,
                  "src": "2829:21:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 266,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2829:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2819:37:1"
            },
            "returnParameters": {
              "id": 271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 270,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 293,
                  "src": "2902:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 269,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2902:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2901:9:1"
            },
            "scope": 303,
            "src": "2802:233:1",
            "stateMutability": "view",
            "superFunction": 6582,
            "visibility": "public"
          },
          {
            "body": {
              "id": 301,
              "nodeType": "Block",
              "src": "3121:39:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 298,
                      "name": "eventsId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 89,
                      "src": "3138:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                        "typeString": "string storage ref[] storage ref"
                      }
                    },
                    "id": 299,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "3138:15:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 297,
                  "id": 300,
                  "nodeType": "Return",
                  "src": "3131:22:1"
                }
              ]
            },
            "documentation": null,
            "id": 302,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEventsSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3063:2:1"
            },
            "returnParameters": {
              "id": 297,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 296,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 302,
                  "src": "3111:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 295,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3111:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3110:6:1"
            },
            "scope": 303,
            "src": "3041:119:1",
            "stateMutability": "view",
            "superFunction": 6587,
            "visibility": "public"
          }
        ],
        "scope": 304,
        "src": "222:2940:1"
      }
    ],
    "src": "0:3163:1"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.3",
  "updatedAt": "2020-01-15T10:55:50.251Z"
}