{
  "contractName": "SignatureDeployer",
  "abi": [
    {
      "inputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "fileId",
          "type": "string"
        }
      ],
      "name": "deployFile",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "documentId",
          "type": "string"
        },
        {
          "name": "deployer",
          "type": "address"
        }
      ],
      "name": "deployDocument",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "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": "deployEvent",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5061381a806100206000396000f3fe60806040526004361061003d5763ffffffff60e060020a60003504166389b77a848114610042578063a91710121461011a578063f776d03b146101cb575b600080fd5b34801561004e57600080fd5b506100fe6004803603604081101561006557600080fd5b810190602081018135602060020a81111561007f57600080fd5b82018360208201111561009157600080fd5b803590602001918460018302840111602060020a831117156100b257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506103889050565b60408051600160a060020a039092168252519081900360200190f35b34801561012657600080fd5b506100fe6004803603602081101561013d57600080fd5b810190602081018135602060020a81111561015757600080fd5b82018360208201111561016957600080fd5b803590602001918460018302840111602060020a8311171561018a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610434945050505050565b3480156101d757600080fd5b506100fe600480360360808110156101ee57600080fd5b810190602081018135602060020a81111561020857600080fd5b82018360208201111561021a57600080fd5b803590602001918460018302840111602060020a8311171561023b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561028d57600080fd5b82018360208201111561029f57600080fd5b803590602001918460018302840111602060020a831117156102c057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561031257600080fd5b82018360208201111561032457600080fd5b803590602001918460018302840111602060020a8311171561034557600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506104ca915050565b6000828261039461063d565b600160a060020a03821660208083019190915260408083528451908301528351829160608301919086019080838360005b838110156103dd5781810151838201526020016103c5565b50505050905090810190601f16801561040a5780820380516001836020036101000a031916815260200191505b509350505050604051809103906000f08015801561042c573d6000803e3d6000fd5b509392505050565b60008161043f61064d565b60208082528251818301528251829160408301919085019080838360005b8381101561047557818101518382015260200161045d565b50505050905090810190601f1680156104a25780820380516001836020036101000a031916815260200191505b5092505050604051809103906000f0801580156104c3573d6000803e3d6000fd5b5092915050565b6000848484846104d861065d565b80806020018060200180602001858152602001848103845288818151815260200191508051906020019080838360005b83811015610520578181015183820152602001610508565b50505050905090810190601f16801561054d5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015610580578181015183820152602001610568565b50505050905090810190601f1680156105ad5780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b838110156105e05781810151838201526020016105c8565b50505050905090810190601f16801561060d5780820380516001836020036101000a031916815260200191505b50975050505050505050604051809103906000f080158015610633573d6000803e3d6000fd5b5095945050505050565b6040516124ff8061066e83390190565b60405161076280612b6d83390190565b604051610520806132cf8339019056fe60806040523480156200001157600080fd5b50604051620024ff380380620024ff833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b5050602091820151600d805433600160a060020a031991821617909155600f8054909116600160a060020a03831617905581519194509250620000c99160109190850190620000d2565b50505062000177565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200011557805160ff191683800117855562000145565b8280016001018555821562000145579182015b828111156200014557825182559160200191906001019062000128565b506200015392915062000157565b5090565b6200017491905b808211156200015357600081556001016200015e565b90565b61237880620001876000396000f3fe6080604052600436106101445763ffffffff60e060020a60003504166238a5b5811461014957806306adb7d3146101fe57806308f7a6cc146102255780630b4f3f3d146102af5780630cfcdf80146103605780631087452c1461038957806313af4035146103ba578063232a6b9d146103ed578063238ac933146104025780632fb1b25f146104175780633f9942ff146104415780634a8beaf41461045657806351ff4847146105075780635296ad561461051c57806357ac264e146105315780636bee1e1b1461054657806372c97e7f146107065780638525855d14610730578063aaf6c74014610745578063acf635b9146107f6578063af640d0f14610829578063cb07a4ac1461083e578063cf09e0d014610853578063d5f3948814610868578063db6f02811461087d578063de4cd84214610892578063e190206314610a4f575b600080fd5b34801561015557600080fd5b506101fc6004803603604081101561016c57600080fd5b810190602081018135602060020a81111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460018302840111602060020a831117156101b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610b00915050565b005b34801561020a57600080fd5b50610213610b95565b60408051918252519081900360200190f35b34801561023157600080fd5b5061023a610b9b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027457818101518382015260200161025c565b50505050905090810190601f1680156102a15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102bb57600080fd5b506101fc600480360360208110156102d257600080fd5b810190602081018135602060020a8111156102ec57600080fd5b8201836020820111156102fe57600080fd5b803590602001918460018302840111602060020a8311171561031f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c29945050505050565b34801561036c57600080fd5b50610375610dbb565b604080519115158252519081900360200190f35b34801561039557600080fd5b5061039e610dca565b60408051600160a060020a039092168252519081900360200190f35b3480156103c657600080fd5b506101fc600480360360208110156103dd57600080fd5b5035600160a060020a0316610dd9565b3480156103f957600080fd5b50610375610e76565b34801561040e57600080fd5b5061039e610e7f565b34801561042357600080fd5b506101fc6004803603602081101561043a57600080fd5b5035610e8e565b34801561044d57600080fd5b5061037561102f565b34801561046257600080fd5b506101fc6004803603602081101561047957600080fd5b810190602081018135602060020a81111561049357600080fd5b8201836020820111156104a557600080fd5b803590602001918460018302840111602060020a831117156104c657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061103d945050505050565b34801561051357600080fd5b5061039e6111be565b34801561052857600080fd5b5061023a6111cd565b34801561053d57600080fd5b50610213611228565b34801561055257600080fd5b506101fc600480360360a081101561056957600080fd5b810190602081018135602060020a81111561058357600080fd5b82018360208201111561059557600080fd5b803590602001918460018302840111602060020a831117156105b657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561060857600080fd5b82018360208201111561061a57600080fd5b803590602001918460018302840111602060020a8311171561063b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561068d57600080fd5b82018360208201111561069f57600080fd5b803590602001918460018302840111602060020a831117156106c057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020013561122f565b34801561071257600080fd5b5061023a6004803603602081101561072957600080fd5b503561165d565b34801561073c57600080fd5b5061039e6116d1565b34801561075157600080fd5b506101fc6004803603602081101561076857600080fd5b810190602081018135602060020a81111561078257600080fd5b82018360208201111561079457600080fd5b803590602001918460018302840111602060020a831117156107b557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506116e7945050505050565b34801561080257600080fd5b506101fc6004803603602081101561081957600080fd5b5035600160a060020a0316611808565b34801561083557600080fd5b5061023a6118a5565b34801561084a57600080fd5b5061023a611900565b34801561085f57600080fd5b5061021361195b565b34801561087457600080fd5b5061039e611961565b34801561088957600080fd5b5061023a611970565b34801561089e57600080fd5b506101fc600480360360808110156108b557600080fd5b810190602081018135602060020a8111156108cf57600080fd5b8201836020820111156108e157600080fd5b803590602001918460018302840111602060020a8311171561090257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561095457600080fd5b82018360208201111561096657600080fd5b803590602001918460018302840111602060020a8311171561098757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a8111156109d957600080fd5b8201836020820111156109eb57600080fd5b803590602001918460018302840111602060020a83111715610a0c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506119cb915050565b348015610a5b57600080fd5b5061039e60048036036020811015610a7257600080fd5b810190602081018135602060020a811115610a8c57600080fd5b820183602082011115610a9e57600080fd5b803590602001918460018302840111602060020a83111715610abf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611e92945050505050565b600d54600160a060020a0316331480610b235750600e54600160a060020a031633145b1515610b7b576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b8151610b8e906012906020850190612234565b5060175550565b60165481565b6011805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b820191906000526020600020905b815481529060010190602001808311610c0457829003601f168201915b505050505081565b600d54600160a060020a0316331480610c4c5750600e54600160a060020a031633145b1515610ca4576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b60185460ff1615610d08576040805160e560020a62461bcd02815260206004820152602f602482015260008051602061230d8339815191526044820152608a60020a6e18d85b89dd0818d85b98d95b081a5d02606482015290519081900360840190fd5b8051610d1b906011906020840190612234565b506018805461ff00191661010017905560408051808201825260148152606260020a731a5917d91bd8dd5b595b9d17d8d85b98d95b19590260208083019190915282518084018452601a81527f646f63756d656e742e636f6e74726163742e63616e63656c65640000000000008183015283518085019094526008845260c060020a67736f6c69646974790291840191909152610db892426119cb565b50565b60185462010000900460ff1681565b601954600160a060020a031681565b600d54600160a060020a0316331480610dfc5750600e54600160a060020a031633145b1515610e54576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b600e8054600160a060020a031916600160a060020a0392909216919091179055565b60185460ff1681565b600e54600160a060020a031681565b600e54600160a060020a03163314610ef8576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206122ed8339815191526044820152609160020a6d3936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b60185462010000900460ff161580610f185750601854610100900460ff16155b1515610f94576040805160e560020a62461bcd02815260206004820152603b60248201527f446f63756d656e7420697320616c7265616479206465636c696e6564206f722060448201527f63616e63656c65642c20796f752063616e2774207369676e2069740000000000606482015290519081900360840190fd5b60168190556018805460ff1916600117815560408051808201825260128152607260020a711a5917d91bd8dd5b595b9d17dcda59db995902602080830191909152825180840184529384527f646f63756d656e742e636f6e74726163742e7369676e656400000000000000008482015282518084019093526008835260c060020a67736f6c69646974790290830152610db8929091426119cb565b601854610100900460ff1681565b600e54600160a060020a031633146110a7576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206122ed8339815191526044820152609160020a6d3936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b60185460ff161561110c576040805160e560020a62461bcd028152602060048201526030602482015260008051602061230d8339815191526044820152608260020a6f18d85b89dd08191958db1a5b99481a5d02606482015290519081900360840190fd5b805161111f906013906020840190612234565b506018805462ff000019166201000017905560408051808201825260148152606260020a731a5917d91bd8dd5b595b9d17d91958db1a5b99590260208083019190915282518084018452601a81527f646f63756d656e742e636f6e74726163742e6465636c696e65640000000000008183015283518085019094526008845260c060020a67536f6c69646974790291840191909152610db892426119cb565b600d54600160a060020a031681565b6013805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b6015545b90565b600d54600160a060020a03163314806112525750600e54600160a060020a031633145b15156112aa576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b600f54604051602060248201818152885160448401528851600094606094600160a060020a03909116938b93928392606401918501908083838b5b838110156112fd5781810151838201526020016112e5565b50505050905090810190601f16801561132a5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e160020a63548b880902178152905182519295509350839250908083835b602083106113885780518252601f199092019160209182019101611369565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146113e8576040519150601f19603f3d011682016040523d82523d6000602084013e6113ed565b606091505b509150915081151561145d576040805160e560020a62461bcd02815260206004820152602860248201527f4572726f72207768696c65206465706c6f79696e672066696c652066726f6d20604482015260c260020a67191bd8dd5b595b9d02606482015290519081900360840190fd5b61146681611fd1565b601860036101000a815481600160a060020a030219169083600160a060020a03160217905550601860039054906101000a9004600160a060020a0316600160a060020a03166387c80464878787876040518563ffffffff1660e060020a028152600401808060200180602001858152602001848152602001838103835287818151815260200191508051906020019080838360005b838110156115135781810151838201526020016114fb565b50505050905090810190601f1680156115405780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561157357818101518382015260200161155b565b50505050905090810190601f1680156115a05780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b1580156115c357600080fd5b505af11580156115d7573d6000803e3d6000fd5b505050506116546040805190810160405280600e8152602001609060020a6d66696c652d6e6f7469666965727302815250604080519081016040528060158152602001605a60020a74199a5b194b98dbdb9d1c9858dd0b98dc99585d195902815250601860039054906101000a9004600160a060020a0316611fd8565b50505050505050565b601580548290811061166b57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815293509091830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b60185463010000009004600160a060020a031681565b600d54600160a060020a031633148061170a5750600e54600160a060020a031633145b1515611762576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b8051611775906014906020840190612234565b50610db8604080519081016040528060138152602001606b60020a720d2c8beccd2d8cabee6d2cedccac8bed0c2e6d028152506040805190810160405280601881526020017f66696c652e7369676e65645f686173682e63726561746564000000000000000081525060408051908101604052806008815260200160c060020a67736f6c696469747902815250426119cb565b600d54600160a060020a031633148061182b5750600e54600160a060020a031633145b1515611883576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b60198054600160a060020a031916600160a060020a0392909216919091179055565b6010805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b6014805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b60175481565b600f54600160a060020a031681565b6012805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b600d54600160a060020a03163314806119ee5750600e54600160a060020a031633145b1515611a46576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b60006060600f60009054906101000a9004600160a060020a0316600160a060020a03168686868660405160240180806020018060200180602001858152602001848103845288818151815260200191508051906020019080838360005b83811015611abb578181015183820152602001611aa3565b50505050905090810190601f168015611ae85780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015611b1b578181015183820152602001611b03565b50505050905090810190601f168015611b485780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b83811015611b7b578181015183820152602001611b63565b50505050905090810190601f168015611ba85780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e060020a63f776d03b0217815290518251929a509850889750955093508392508591508490505b60208310611c0f5780518252601f199092019160209182019101611bf0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611c6f576040519150601f19603f3d011682016040523d82523d6000602084013e611c74565b606091505b5091509150811515611ce5576040805160e560020a62461bcd02815260206004820152602960248201527f4572726f72207768696c65206465706c6f79696e67206576656e742066726f6d604482015260ba60020a6808191bd8dd5b595b9d02606482015290519081900360840190fd5b611cee81611fd1565b601a876040518082805190602001908083835b60208310611d205780518252601f199092019160209182019101611d01565b51815160209384036101000a60001901801990921691161790529201948552506040519384900381019093208054600160a060020a031916600160a060020a0395909516949094179093555060158054600181018083556000929092528951919350611db4927f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec47590910191908a0190612234565b5050611e8a6040805190810160405280600f8152602001608860020a6e6576656e742d6e6f74696669657273028152506040805190810160405280601681526020017f6576656e742e636f6e74726163742e6372656174656400000000000000000000815250601a896040518082805190602001908083835b60208310611e4c5780518252601f199092019160209182019101611e2d565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a03169150611fd89050565b505050505050565b600080600160a060020a0316601a836040518082805190602001908083835b60208310611ed05780518252601f199092019160209182019101611eb1565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a031692909214159150611f629050576040805160e560020a62461bcd02815260206004820152601760248201527f546865206576656e7420646f65736e2774206578697374000000000000000000604482015290519081900360640190fd5b601a826040518082805190602001908083835b60208310611f945780518252601f199092019160209182019101611f75565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a0316949350505050565b6020015190565b6000805b6019546040805160e260020a633ce8989d0281526024810184905260048101918252875160448201528751600160a060020a039093169263f3a262749289928692829160640190602086019080838360005b8381101561204657818101518382015260200161202e565b50505050905090810190601f1680156120735780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561209157600080fd5b505afa1580156120a5573d6000803e3d6000fd5b505050506040513d60208110156120bb57600080fd5b50519150600101600160a060020a0382161561221d5760408051600160a060020a038581166044830152602482019283528651606483015286519085169287928792829160840190602086019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e160020a63738f32bb0217815290518251929650945084935091508083835b602083106121b25780518252601f199092019160209182019101612193565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612214576040519150601f19603f3d011682016040523d82523d6000602084013e612219565b606091505b5050505b600160a060020a0382161515611fdc575050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061227557805160ff19168380011785556122a2565b828001600101855582156122a2579182015b828111156122a2578251825591602001919060010190612287565b506122ae9291506122b2565b5090565b61122c91905b808211156122ae57600081556001016122b856fe6572666f726d207468697320616374696f6e00000000000000000000000000004f6e6c7920746865206f776e6572206163636f756e742063616e20706572666f446f63756d656e7420697320616c7265616479207369676e65642c20796f75204f6e6c7920746865205369676e6174757265206163636f756e742063616e2070a165627a7a72305820415b620e59f0c5b58844b46503b0e1c18077f03bcaaa308b452229b8a75510040029608060405234801561001057600080fd5b506040516107623803806107628339810180604052602081101561003357600080fd5b81019080805164010000000081111561004b57600080fd5b8201602081018481111561005e57600080fd5b815164010000000081118282018710171561007857600080fd5b5050805190935061009292506007915060208401906100ab565b505060068054600160a060020a03191633179055610146565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100ec57805160ff1916838001178555610119565b82800160010185558215610119579182015b828111156101195782518255916020019190600101906100fe565b50610125929150610129565b5090565b61014391905b80821115610125576000815560010161012f565b90565b61060d806101556000396000f3fe6080604052600436106100695763ffffffff60e060020a60003504166306fdde03811461006e57806360f96a8f146100f857806387c8046414610129578063949d225d14610266578063af640d0f1461028d578063bce00f76146102a2578063cf09e0d0146102b7575b600080fd5b34801561007a57600080fd5b506100836102cc565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100bd5781810151838201526020016100a5565b50505050905090810190601f1680156100ea5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561010457600080fd5b5061010d61035a565b60408051600160a060020a039092168252519081900360200190f35b34801561013557600080fd5b506102646004803603608081101561014c57600080fd5b810190602081018135602060020a81111561016657600080fd5b82018360208201111561017857600080fd5b803590602001918460018302840111602060020a8311171561019957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a8111156101eb57600080fd5b8201836020820111156101fd57600080fd5b803590602001918460018302840111602060020a8311171561021e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135610369565b005b34801561027257600080fd5b5061027b610484565b60408051918252519081900360200190f35b34801561029957600080fd5b5061008361048a565b3480156102ae57600080fd5b506100836104e5565b3480156102c357600080fd5b5061027b610540565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103525780601f1061032757610100808354040283529160200191610352565b820191906000526020600020905b81548152906001019060200180831161033557829003601f168201915b505050505081565b600654600160a060020a031681565b600654600160a060020a031633146103e6576040805160e560020a62461bcd02815260206004820152602f60248201527f4f6e6c792074686520706172656e74206163636f756e742063616e20706572666044820152608960020a6e37b936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b6000811180156103f65750835115155b151561044c576040805160e560020a62461bcd02815260206004820152601660248201527f496e76616c696420696e7075742076616c756528732900000000000000000000604482015290519081900360640190fd5b835161045f906008906020870190610546565b50600b819055600a829055825161047d906009906020860190610546565b5050505050565b600b5481565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103525780601f1061032757610100808354040283529160200191610352565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103525780601f1061032757610100808354040283529160200191610352565b600a5481565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061058757805160ff19168380011785556105b4565b828001600101855582156105b4579182015b828111156105b4578251825591602001919060010190610599565b506105c09291506105c4565b5090565b6105de91905b808211156105c057600081556001016105ca565b9056fea165627a7a72305820bf1470f5c6e37b80610fc902ea5a173abaf4e172a93b9c4d958fe627875032ea0029608060405234801561001057600080fd5b506040516105203803806105208339810180604052608081101561003357600080fd5b81019080805164010000000081111561004b57600080fd5b8201602081018481111561005e57600080fd5b815164010000000081118282018710171561007857600080fd5b5050929190602001805164010000000081111561009457600080fd5b820160208101848111156100a757600080fd5b81516401000000008111828201871017156100c157600080fd5b505092919060200180516401000000008111156100dd57600080fd5b820160208101848111156100f057600080fd5b815164010000000081118282018710171561010a57600080fd5b505060209182015186519194509250610129916004919087019061015e565b50825161013d90600190602086019061015e565b50815161015190600690602085019061015e565b50600755506101f9915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061019f57805160ff19168380011785556101cc565b828001600101855582156101cc579182015b828111156101cc5782518255916020019190600101906101b1565b506101d89291506101dc565b5090565b6101f691905b808211156101d857600081556001016101e2565b90565b610318806102086000396000f3fe6080604052600436106100535763ffffffff60e060020a6000350416630b305f308114610058578063af640d0f146100e2578063bdf1c4a1146100f7578063cf09e0d01461010c578063d44b930014610133575b600080fd5b34801561006457600080fd5b5061006d610148565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100a757818101518382015260200161008f565b50505050905090810190601f1680156100d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156100ee57600080fd5b5061006d6101d6565b34801561010357600080fd5b5061006d610231565b34801561011857600080fd5b5061012161028c565b60408051918252519081900360200190f35b34801561013f57600080fd5b5061006d610292565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101ce5780601f106101a3576101008083540402835291602001916101ce565b820191906000526020600020905b8154815290600101906020018083116101b157829003601f168201915b505050505081565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101ce5780601f106101a3576101008083540402835291602001916101ce565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101ce5780601f106101a3576101008083540402835291602001916101ce565b60075481565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101ce5780601f106101a3576101008083540402835291602001916101ce56fea165627a7a72305820da7d04bdf353912ffc207cce60a1e719ade498f37d4d53fbf649747790331bd80029a165627a7a72305820c59b131b3cd775be150930a8c1e599e4b38b78f888f34f73a49b4ad166a39c630029",
  "deployedBytecode": "0x60806040526004361061003d5763ffffffff60e060020a60003504166389b77a848114610042578063a91710121461011a578063f776d03b146101cb575b600080fd5b34801561004e57600080fd5b506100fe6004803603604081101561006557600080fd5b810190602081018135602060020a81111561007f57600080fd5b82018360208201111561009157600080fd5b803590602001918460018302840111602060020a831117156100b257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506103889050565b60408051600160a060020a039092168252519081900360200190f35b34801561012657600080fd5b506100fe6004803603602081101561013d57600080fd5b810190602081018135602060020a81111561015757600080fd5b82018360208201111561016957600080fd5b803590602001918460018302840111602060020a8311171561018a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610434945050505050565b3480156101d757600080fd5b506100fe600480360360808110156101ee57600080fd5b810190602081018135602060020a81111561020857600080fd5b82018360208201111561021a57600080fd5b803590602001918460018302840111602060020a8311171561023b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561028d57600080fd5b82018360208201111561029f57600080fd5b803590602001918460018302840111602060020a831117156102c057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561031257600080fd5b82018360208201111561032457600080fd5b803590602001918460018302840111602060020a8311171561034557600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506104ca915050565b6000828261039461063d565b600160a060020a03821660208083019190915260408083528451908301528351829160608301919086019080838360005b838110156103dd5781810151838201526020016103c5565b50505050905090810190601f16801561040a5780820380516001836020036101000a031916815260200191505b509350505050604051809103906000f08015801561042c573d6000803e3d6000fd5b509392505050565b60008161043f61064d565b60208082528251818301528251829160408301919085019080838360005b8381101561047557818101518382015260200161045d565b50505050905090810190601f1680156104a25780820380516001836020036101000a031916815260200191505b5092505050604051809103906000f0801580156104c3573d6000803e3d6000fd5b5092915050565b6000848484846104d861065d565b80806020018060200180602001858152602001848103845288818151815260200191508051906020019080838360005b83811015610520578181015183820152602001610508565b50505050905090810190601f16801561054d5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015610580578181015183820152602001610568565b50505050905090810190601f1680156105ad5780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b838110156105e05781810151838201526020016105c8565b50505050905090810190601f16801561060d5780820380516001836020036101000a031916815260200191505b50975050505050505050604051809103906000f080158015610633573d6000803e3d6000fd5b5095945050505050565b6040516124ff8061066e83390190565b60405161076280612b6d83390190565b604051610520806132cf8339019056fe60806040523480156200001157600080fd5b50604051620024ff380380620024ff833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b5050602091820151600d805433600160a060020a031991821617909155600f8054909116600160a060020a03831617905581519194509250620000c99160109190850190620000d2565b50505062000177565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200011557805160ff191683800117855562000145565b8280016001018555821562000145579182015b828111156200014557825182559160200191906001019062000128565b506200015392915062000157565b5090565b6200017491905b808211156200015357600081556001016200015e565b90565b61237880620001876000396000f3fe6080604052600436106101445763ffffffff60e060020a60003504166238a5b5811461014957806306adb7d3146101fe57806308f7a6cc146102255780630b4f3f3d146102af5780630cfcdf80146103605780631087452c1461038957806313af4035146103ba578063232a6b9d146103ed578063238ac933146104025780632fb1b25f146104175780633f9942ff146104415780634a8beaf41461045657806351ff4847146105075780635296ad561461051c57806357ac264e146105315780636bee1e1b1461054657806372c97e7f146107065780638525855d14610730578063aaf6c74014610745578063acf635b9146107f6578063af640d0f14610829578063cb07a4ac1461083e578063cf09e0d014610853578063d5f3948814610868578063db6f02811461087d578063de4cd84214610892578063e190206314610a4f575b600080fd5b34801561015557600080fd5b506101fc6004803603604081101561016c57600080fd5b810190602081018135602060020a81111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460018302840111602060020a831117156101b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610b00915050565b005b34801561020a57600080fd5b50610213610b95565b60408051918252519081900360200190f35b34801561023157600080fd5b5061023a610b9b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027457818101518382015260200161025c565b50505050905090810190601f1680156102a15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102bb57600080fd5b506101fc600480360360208110156102d257600080fd5b810190602081018135602060020a8111156102ec57600080fd5b8201836020820111156102fe57600080fd5b803590602001918460018302840111602060020a8311171561031f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c29945050505050565b34801561036c57600080fd5b50610375610dbb565b604080519115158252519081900360200190f35b34801561039557600080fd5b5061039e610dca565b60408051600160a060020a039092168252519081900360200190f35b3480156103c657600080fd5b506101fc600480360360208110156103dd57600080fd5b5035600160a060020a0316610dd9565b3480156103f957600080fd5b50610375610e76565b34801561040e57600080fd5b5061039e610e7f565b34801561042357600080fd5b506101fc6004803603602081101561043a57600080fd5b5035610e8e565b34801561044d57600080fd5b5061037561102f565b34801561046257600080fd5b506101fc6004803603602081101561047957600080fd5b810190602081018135602060020a81111561049357600080fd5b8201836020820111156104a557600080fd5b803590602001918460018302840111602060020a831117156104c657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061103d945050505050565b34801561051357600080fd5b5061039e6111be565b34801561052857600080fd5b5061023a6111cd565b34801561053d57600080fd5b50610213611228565b34801561055257600080fd5b506101fc600480360360a081101561056957600080fd5b810190602081018135602060020a81111561058357600080fd5b82018360208201111561059557600080fd5b803590602001918460018302840111602060020a831117156105b657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561060857600080fd5b82018360208201111561061a57600080fd5b803590602001918460018302840111602060020a8311171561063b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561068d57600080fd5b82018360208201111561069f57600080fd5b803590602001918460018302840111602060020a831117156106c057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020013561122f565b34801561071257600080fd5b5061023a6004803603602081101561072957600080fd5b503561165d565b34801561073c57600080fd5b5061039e6116d1565b34801561075157600080fd5b506101fc6004803603602081101561076857600080fd5b810190602081018135602060020a81111561078257600080fd5b82018360208201111561079457600080fd5b803590602001918460018302840111602060020a831117156107b557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506116e7945050505050565b34801561080257600080fd5b506101fc6004803603602081101561081957600080fd5b5035600160a060020a0316611808565b34801561083557600080fd5b5061023a6118a5565b34801561084a57600080fd5b5061023a611900565b34801561085f57600080fd5b5061021361195b565b34801561087457600080fd5b5061039e611961565b34801561088957600080fd5b5061023a611970565b34801561089e57600080fd5b506101fc600480360360808110156108b557600080fd5b810190602081018135602060020a8111156108cf57600080fd5b8201836020820111156108e157600080fd5b803590602001918460018302840111602060020a8311171561090257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561095457600080fd5b82018360208201111561096657600080fd5b803590602001918460018302840111602060020a8311171561098757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a8111156109d957600080fd5b8201836020820111156109eb57600080fd5b803590602001918460018302840111602060020a83111715610a0c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506119cb915050565b348015610a5b57600080fd5b5061039e60048036036020811015610a7257600080fd5b810190602081018135602060020a811115610a8c57600080fd5b820183602082011115610a9e57600080fd5b803590602001918460018302840111602060020a83111715610abf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611e92945050505050565b600d54600160a060020a0316331480610b235750600e54600160a060020a031633145b1515610b7b576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b8151610b8e906012906020850190612234565b5060175550565b60165481565b6011805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b820191906000526020600020905b815481529060010190602001808311610c0457829003601f168201915b505050505081565b600d54600160a060020a0316331480610c4c5750600e54600160a060020a031633145b1515610ca4576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b60185460ff1615610d08576040805160e560020a62461bcd02815260206004820152602f602482015260008051602061230d8339815191526044820152608a60020a6e18d85b89dd0818d85b98d95b081a5d02606482015290519081900360840190fd5b8051610d1b906011906020840190612234565b506018805461ff00191661010017905560408051808201825260148152606260020a731a5917d91bd8dd5b595b9d17d8d85b98d95b19590260208083019190915282518084018452601a81527f646f63756d656e742e636f6e74726163742e63616e63656c65640000000000008183015283518085019094526008845260c060020a67736f6c69646974790291840191909152610db892426119cb565b50565b60185462010000900460ff1681565b601954600160a060020a031681565b600d54600160a060020a0316331480610dfc5750600e54600160a060020a031633145b1515610e54576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b600e8054600160a060020a031916600160a060020a0392909216919091179055565b60185460ff1681565b600e54600160a060020a031681565b600e54600160a060020a03163314610ef8576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206122ed8339815191526044820152609160020a6d3936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b60185462010000900460ff161580610f185750601854610100900460ff16155b1515610f94576040805160e560020a62461bcd02815260206004820152603b60248201527f446f63756d656e7420697320616c7265616479206465636c696e6564206f722060448201527f63616e63656c65642c20796f752063616e2774207369676e2069740000000000606482015290519081900360840190fd5b60168190556018805460ff1916600117815560408051808201825260128152607260020a711a5917d91bd8dd5b595b9d17dcda59db995902602080830191909152825180840184529384527f646f63756d656e742e636f6e74726163742e7369676e656400000000000000008482015282518084019093526008835260c060020a67736f6c69646974790290830152610db8929091426119cb565b601854610100900460ff1681565b600e54600160a060020a031633146110a7576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206122ed8339815191526044820152609160020a6d3936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b60185460ff161561110c576040805160e560020a62461bcd028152602060048201526030602482015260008051602061230d8339815191526044820152608260020a6f18d85b89dd08191958db1a5b99481a5d02606482015290519081900360840190fd5b805161111f906013906020840190612234565b506018805462ff000019166201000017905560408051808201825260148152606260020a731a5917d91bd8dd5b595b9d17d91958db1a5b99590260208083019190915282518084018452601a81527f646f63756d656e742e636f6e74726163742e6465636c696e65640000000000008183015283518085019094526008845260c060020a67536f6c69646974790291840191909152610db892426119cb565b600d54600160a060020a031681565b6013805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b6015545b90565b600d54600160a060020a03163314806112525750600e54600160a060020a031633145b15156112aa576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b600f54604051602060248201818152885160448401528851600094606094600160a060020a03909116938b93928392606401918501908083838b5b838110156112fd5781810151838201526020016112e5565b50505050905090810190601f16801561132a5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e160020a63548b880902178152905182519295509350839250908083835b602083106113885780518252601f199092019160209182019101611369565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146113e8576040519150601f19603f3d011682016040523d82523d6000602084013e6113ed565b606091505b509150915081151561145d576040805160e560020a62461bcd02815260206004820152602860248201527f4572726f72207768696c65206465706c6f79696e672066696c652066726f6d20604482015260c260020a67191bd8dd5b595b9d02606482015290519081900360840190fd5b61146681611fd1565b601860036101000a815481600160a060020a030219169083600160a060020a03160217905550601860039054906101000a9004600160a060020a0316600160a060020a03166387c80464878787876040518563ffffffff1660e060020a028152600401808060200180602001858152602001848152602001838103835287818151815260200191508051906020019080838360005b838110156115135781810151838201526020016114fb565b50505050905090810190601f1680156115405780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561157357818101518382015260200161155b565b50505050905090810190601f1680156115a05780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b1580156115c357600080fd5b505af11580156115d7573d6000803e3d6000fd5b505050506116546040805190810160405280600e8152602001609060020a6d66696c652d6e6f7469666965727302815250604080519081016040528060158152602001605a60020a74199a5b194b98dbdb9d1c9858dd0b98dc99585d195902815250601860039054906101000a9004600160a060020a0316611fd8565b50505050505050565b601580548290811061166b57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815293509091830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b60185463010000009004600160a060020a031681565b600d54600160a060020a031633148061170a5750600e54600160a060020a031633145b1515611762576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b8051611775906014906020840190612234565b50610db8604080519081016040528060138152602001606b60020a720d2c8beccd2d8cabee6d2cedccac8bed0c2e6d028152506040805190810160405280601881526020017f66696c652e7369676e65645f686173682e63726561746564000000000000000081525060408051908101604052806008815260200160c060020a67736f6c696469747902815250426119cb565b600d54600160a060020a031633148061182b5750600e54600160a060020a031633145b1515611883576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b60198054600160a060020a031916600160a060020a0392909216919091179055565b6010805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b6014805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b60175481565b600f54600160a060020a031681565b6012805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b600d54600160a060020a03163314806119ee5750600e54600160a060020a031633145b1515611a46576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b60006060600f60009054906101000a9004600160a060020a0316600160a060020a03168686868660405160240180806020018060200180602001858152602001848103845288818151815260200191508051906020019080838360005b83811015611abb578181015183820152602001611aa3565b50505050905090810190601f168015611ae85780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015611b1b578181015183820152602001611b03565b50505050905090810190601f168015611b485780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b83811015611b7b578181015183820152602001611b63565b50505050905090810190601f168015611ba85780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e060020a63f776d03b0217815290518251929a509850889750955093508392508591508490505b60208310611c0f5780518252601f199092019160209182019101611bf0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611c6f576040519150601f19603f3d011682016040523d82523d6000602084013e611c74565b606091505b5091509150811515611ce5576040805160e560020a62461bcd02815260206004820152602960248201527f4572726f72207768696c65206465706c6f79696e67206576656e742066726f6d604482015260ba60020a6808191bd8dd5b595b9d02606482015290519081900360840190fd5b611cee81611fd1565b601a876040518082805190602001908083835b60208310611d205780518252601f199092019160209182019101611d01565b51815160209384036101000a60001901801990921691161790529201948552506040519384900381019093208054600160a060020a031916600160a060020a0395909516949094179093555060158054600181018083556000929092528951919350611db4927f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec47590910191908a0190612234565b5050611e8a6040805190810160405280600f8152602001608860020a6e6576656e742d6e6f74696669657273028152506040805190810160405280601681526020017f6576656e742e636f6e74726163742e6372656174656400000000000000000000815250601a896040518082805190602001908083835b60208310611e4c5780518252601f199092019160209182019101611e2d565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a03169150611fd89050565b505050505050565b600080600160a060020a0316601a836040518082805190602001908083835b60208310611ed05780518252601f199092019160209182019101611eb1565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a031692909214159150611f629050576040805160e560020a62461bcd02815260206004820152601760248201527f546865206576656e7420646f65736e2774206578697374000000000000000000604482015290519081900360640190fd5b601a826040518082805190602001908083835b60208310611f945780518252601f199092019160209182019101611f75565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a0316949350505050565b6020015190565b6000805b6019546040805160e260020a633ce8989d0281526024810184905260048101918252875160448201528751600160a060020a039093169263f3a262749289928692829160640190602086019080838360005b8381101561204657818101518382015260200161202e565b50505050905090810190601f1680156120735780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561209157600080fd5b505afa1580156120a5573d6000803e3d6000fd5b505050506040513d60208110156120bb57600080fd5b50519150600101600160a060020a0382161561221d5760408051600160a060020a038581166044830152602482019283528651606483015286519085169287928792829160840190602086019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e160020a63738f32bb0217815290518251929650945084935091508083835b602083106121b25780518252601f199092019160209182019101612193565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612214576040519150601f19603f3d011682016040523d82523d6000602084013e612219565b606091505b5050505b600160a060020a0382161515611fdc575050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061227557805160ff19168380011785556122a2565b828001600101855582156122a2579182015b828111156122a2578251825591602001919060010190612287565b506122ae9291506122b2565b5090565b61122c91905b808211156122ae57600081556001016122b856fe6572666f726d207468697320616374696f6e00000000000000000000000000004f6e6c7920746865206f776e6572206163636f756e742063616e20706572666f446f63756d656e7420697320616c7265616479207369676e65642c20796f75204f6e6c7920746865205369676e6174757265206163636f756e742063616e2070a165627a7a72305820415b620e59f0c5b58844b46503b0e1c18077f03bcaaa308b452229b8a75510040029608060405234801561001057600080fd5b506040516107623803806107628339810180604052602081101561003357600080fd5b81019080805164010000000081111561004b57600080fd5b8201602081018481111561005e57600080fd5b815164010000000081118282018710171561007857600080fd5b5050805190935061009292506007915060208401906100ab565b505060068054600160a060020a03191633179055610146565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100ec57805160ff1916838001178555610119565b82800160010185558215610119579182015b828111156101195782518255916020019190600101906100fe565b50610125929150610129565b5090565b61014391905b80821115610125576000815560010161012f565b90565b61060d806101556000396000f3fe6080604052600436106100695763ffffffff60e060020a60003504166306fdde03811461006e57806360f96a8f146100f857806387c8046414610129578063949d225d14610266578063af640d0f1461028d578063bce00f76146102a2578063cf09e0d0146102b7575b600080fd5b34801561007a57600080fd5b506100836102cc565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100bd5781810151838201526020016100a5565b50505050905090810190601f1680156100ea5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561010457600080fd5b5061010d61035a565b60408051600160a060020a039092168252519081900360200190f35b34801561013557600080fd5b506102646004803603608081101561014c57600080fd5b810190602081018135602060020a81111561016657600080fd5b82018360208201111561017857600080fd5b803590602001918460018302840111602060020a8311171561019957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a8111156101eb57600080fd5b8201836020820111156101fd57600080fd5b803590602001918460018302840111602060020a8311171561021e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135610369565b005b34801561027257600080fd5b5061027b610484565b60408051918252519081900360200190f35b34801561029957600080fd5b5061008361048a565b3480156102ae57600080fd5b506100836104e5565b3480156102c357600080fd5b5061027b610540565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103525780601f1061032757610100808354040283529160200191610352565b820191906000526020600020905b81548152906001019060200180831161033557829003601f168201915b505050505081565b600654600160a060020a031681565b600654600160a060020a031633146103e6576040805160e560020a62461bcd02815260206004820152602f60248201527f4f6e6c792074686520706172656e74206163636f756e742063616e20706572666044820152608960020a6e37b936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b6000811180156103f65750835115155b151561044c576040805160e560020a62461bcd02815260206004820152601660248201527f496e76616c696420696e7075742076616c756528732900000000000000000000604482015290519081900360640190fd5b835161045f906008906020870190610546565b50600b819055600a829055825161047d906009906020860190610546565b5050505050565b600b5481565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103525780601f1061032757610100808354040283529160200191610352565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103525780601f1061032757610100808354040283529160200191610352565b600a5481565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061058757805160ff19168380011785556105b4565b828001600101855582156105b4579182015b828111156105b4578251825591602001919060010190610599565b506105c09291506105c4565b5090565b6105de91905b808211156105c057600081556001016105ca565b9056fea165627a7a72305820bf1470f5c6e37b80610fc902ea5a173abaf4e172a93b9c4d958fe627875032ea0029608060405234801561001057600080fd5b506040516105203803806105208339810180604052608081101561003357600080fd5b81019080805164010000000081111561004b57600080fd5b8201602081018481111561005e57600080fd5b815164010000000081118282018710171561007857600080fd5b5050929190602001805164010000000081111561009457600080fd5b820160208101848111156100a757600080fd5b81516401000000008111828201871017156100c157600080fd5b505092919060200180516401000000008111156100dd57600080fd5b820160208101848111156100f057600080fd5b815164010000000081118282018710171561010a57600080fd5b505060209182015186519194509250610129916004919087019061015e565b50825161013d90600190602086019061015e565b50815161015190600690602085019061015e565b50600755506101f9915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061019f57805160ff19168380011785556101cc565b828001600101855582156101cc579182015b828111156101cc5782518255916020019190600101906101b1565b506101d89291506101dc565b5090565b6101f691905b808211156101d857600081556001016101e2565b90565b610318806102086000396000f3fe6080604052600436106100535763ffffffff60e060020a6000350416630b305f308114610058578063af640d0f146100e2578063bdf1c4a1146100f7578063cf09e0d01461010c578063d44b930014610133575b600080fd5b34801561006457600080fd5b5061006d610148565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100a757818101518382015260200161008f565b50505050905090810190601f1680156100d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156100ee57600080fd5b5061006d6101d6565b34801561010357600080fd5b5061006d610231565b34801561011857600080fd5b5061012161028c565b60408051918252519081900360200190f35b34801561013f57600080fd5b5061006d610292565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101ce5780601f106101a3576101008083540402835291602001916101ce565b820191906000526020600020905b8154815290600101906020018083116101b157829003601f168201915b505050505081565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101ce5780601f106101a3576101008083540402835291602001916101ce565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101ce5780601f106101a3576101008083540402835291602001916101ce565b60075481565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101ce5780601f106101a3576101008083540402835291602001916101ce56fea165627a7a72305820da7d04bdf353912ffc207cce60a1e719ade498f37d4d53fbf649747790331bd80029a165627a7a72305820c59b131b3cd775be150930a8c1e599e4b38b78f888f34f73a49b4ad166a39c630029",
  "sourceMap": "127:826:16:-;;;161:23;8:9:-1;5:2;;;30:1;27;20:12;5:2;161:23:16;127:826;;;;;;",
  "deployedSourceMap": "127:826:16:-;;;;;;;;;-1:-1:-1;;;127:826:16;;;;;;;;;;;;;;;;;;;;;;;346:202;;8:9:-1;5:2;;;30:1;27;20:12;5:2;346:202:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;346:202:16;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;346:202:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;346:202:16;;;;;;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;346:202:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;346:202:16;;-1:-1:-1;;;346:202:16;;-1:-1:-1;;;;;346:202:16;;-1:-1:-1;346:202:16;;-1:-1:-1;346:202:16;;;;;-1:-1:-1;;;;;346:202:16;;;;;;;;;;;;;;190:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;190:150:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;190:150:16;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;190:150:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;190:150:16;;;;;;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;190:150:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;190:150:16;;-1:-1:-1;190:150:16;;-1:-1:-1;;;;;190:150:16;554:397;;8:9:-1;5:2;;;30:1;27;20:12;5:2;554:397:16;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;554:397:16;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;554:397:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;554:397:16;;;;;;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;554:397:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;554:397:16;;;;;;;;-1:-1:-1;554:397:16;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;554:397:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;554:397:16;;;;;;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;554:397:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;554:397:16;;;;;;;;-1:-1:-1;554:397:16;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;554:397:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;554:397:16;;;;;;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;554:397:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;554:397:16;;-1:-1:-1;;554:397:16;;;-1:-1:-1;554:397:16;;-1:-1:-1;;554:397:16;346:202;468:7;519:10;531:8;506:34;;:::i;:::-;-1:-1:-1;;;;;506:34:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;506:34:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;491:50:16;346:202;-1:-1:-1;;;346:202:16:o;190:150::-;278:7;325:6;316:16;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;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;316:16:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;301:32:16;190:150;-1:-1:-1;;190:150:16:o;554:397::-;744:7;822;847:9;874:14;906;795:139;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;795:139:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;795:139:16;;;;;;;;;;;;;;;;;;;;;;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;795:139:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;795:139:16;;;;;;;;;;;;;;;;;;;;;;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;795:139:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;767:177:16;554:397;-1:-1:-1;;;;;554:397:16:o;127:826::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o",
  "source": "pragma solidity <0.6.0;\n\n/*\nGas to deploy: 3.365.936\n*/\n\nimport \"./File.sol\";\nimport \"./Document.sol\";\nimport \"./Event.sol\";\n\n\ncontract SignatureDeployer {\n\n    constructor() public {}\n\n    function deployFile(\n        string memory fileId\n    )\n        public\n        returns (address)\n    {\n        return address(new File(fileId));\n    }\n\n    function deployDocument(\n        string memory documentId,\n        address deployer\n    )\n        public\n        returns (address)\n    {\n        return address(new Document(documentId, deployer));\n    }\n\n    function deployEvent(\n        string memory eventId,\n        string memory eventType,\n        string memory eventUserAgent,\n        uint eventCreatedAt\n    )\n        public\n        returns (address)\n    {\n        return address(\n            new Event(\n                eventId,\n                eventType,\n                eventUserAgent,\n                eventCreatedAt\n            )\n        );\n    }\n}\n",
  "sourcePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/SignatureDeployer.sol",
  "ast": {
    "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/SignatureDeployer.sol",
    "exportedSymbols": {
      "SignatureDeployer": [
        4037
      ]
    },
    "id": 4038,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3972,
        "literals": [
          "solidity",
          "<",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:16"
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/File.sol",
        "file": "./File.sol",
        "id": 3973,
        "nodeType": "ImportDirective",
        "scope": 4038,
        "sourceUnit": 2343,
        "src": "57:20:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/Document.sol",
        "file": "./Document.sol",
        "id": 3974,
        "nodeType": "ImportDirective",
        "scope": 4038,
        "sourceUnit": 2212,
        "src": "78:24:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/Event.sol",
        "file": "./Event.sol",
        "id": 3975,
        "nodeType": "ImportDirective",
        "scope": 4038,
        "sourceUnit": 2254,
        "src": "103:21:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          2211,
          2253,
          2342
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 4037,
        "linearizedBaseContracts": [
          4037
        ],
        "name": "SignatureDeployer",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 3978,
              "nodeType": "Block",
              "src": "182:2:16",
              "statements": []
            },
            "documentation": null,
            "id": 3979,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3976,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "172:2:16"
            },
            "returnParameters": {
              "id": 3977,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "182:0:16"
            },
            "scope": 4037,
            "src": "161:23:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3993,
              "nodeType": "Block",
              "src": "291:49:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3989,
                            "name": "fileId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3981,
                            "src": "325:6:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 3988,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "316:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$returns$_t_contract$_File_$2342_$",
                            "typeString": "function (string memory) returns (contract File)"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 3987,
                            "name": "File",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 2342,
                            "src": "320:4:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_File_$2342",
                              "typeString": "contract File"
                            }
                          }
                        },
                        "id": 3990,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "316:16:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_File_$2342",
                          "typeString": "contract File"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_File_$2342",
                          "typeString": "contract File"
                        }
                      ],
                      "id": 3986,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "308:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 3991,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "308:25:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 3985,
                  "id": 3992,
                  "nodeType": "Return",
                  "src": "301:32:16"
                }
              ]
            },
            "documentation": null,
            "id": 3994,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deployFile",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3981,
                  "name": "fileId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3994,
                  "src": "219:20:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3980,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "219:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "209:36:16"
            },
            "returnParameters": {
              "id": 3985,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3984,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3994,
                  "src": "278:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3983,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "278:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "277:9:16"
            },
            "scope": 4037,
            "src": "190:150:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4011,
              "nodeType": "Block",
              "src": "481:67:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4006,
                            "name": "documentId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3996,
                            "src": "519:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4007,
                            "name": "deployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3998,
                            "src": "531:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "506:12:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_address_$returns$_t_contract$_Document_$2211_$",
                            "typeString": "function (string memory,address) returns (contract Document)"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 4004,
                            "name": "Document",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 2211,
                            "src": "510:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Document_$2211",
                              "typeString": "contract Document"
                            }
                          }
                        },
                        "id": 4008,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "506:34:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Document_$2211",
                          "typeString": "contract Document"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Document_$2211",
                          "typeString": "contract Document"
                        }
                      ],
                      "id": 4003,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "498:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 4009,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "498:43:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 4002,
                  "id": 4010,
                  "nodeType": "Return",
                  "src": "491:50:16"
                }
              ]
            },
            "documentation": null,
            "id": 4012,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deployDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3999,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3996,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4012,
                  "src": "379:24:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3995,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "379:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3998,
                  "name": "deployer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4012,
                  "src": "413:16:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3997,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "413:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "369:66:16"
            },
            "returnParameters": {
              "id": 4002,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4001,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4012,
                  "src": "468:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4000,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "468:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "467:9:16"
            },
            "scope": 4037,
            "src": "346:202:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4035,
              "nodeType": "Block",
              "src": "757:194:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4028,
                            "name": "eventId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4014,
                            "src": "822:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4029,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4016,
                            "src": "847:9:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4030,
                            "name": "eventUserAgent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4018,
                            "src": "874:14:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4031,
                            "name": "eventCreatedAt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4020,
                            "src": "906:14:16",
                            "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_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 4027,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "795:9:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$returns$_t_contract$_Event_$2253_$",
                            "typeString": "function (string memory,string memory,string memory,uint256) returns (contract Event)"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 4026,
                            "name": "Event",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 2253,
                            "src": "799:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Event_$2253",
                              "typeString": "contract Event"
                            }
                          }
                        },
                        "id": 4032,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "795:139:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Event_$2253",
                          "typeString": "contract Event"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Event_$2253",
                          "typeString": "contract Event"
                        }
                      ],
                      "id": 4025,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "774:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 4033,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "774:170:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 4024,
                  "id": 4034,
                  "nodeType": "Return",
                  "src": "767:177:16"
                }
              ]
            },
            "documentation": null,
            "id": 4036,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deployEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4021,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4014,
                  "name": "eventId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4036,
                  "src": "584:21:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4013,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "584:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4016,
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "scope": 4036,
                  "src": "615:23:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4015,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "615:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4018,
                  "name": "eventUserAgent",
                  "nodeType": "VariableDeclaration",
                  "scope": 4036,
                  "src": "648:28:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4017,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "648:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4020,
                  "name": "eventCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 4036,
                  "src": "686:19:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4019,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "686:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "574:137:16"
            },
            "returnParameters": {
              "id": 4024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4023,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4036,
                  "src": "744:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4022,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "744:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "743:9:16"
            },
            "scope": 4037,
            "src": "554:397:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 4038,
        "src": "127:826:16"
      }
    ],
    "src": "0:954:16"
  },
  "legacyAST": {
    "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/SignatureDeployer.sol",
    "exportedSymbols": {
      "SignatureDeployer": [
        4037
      ]
    },
    "id": 4038,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3972,
        "literals": [
          "solidity",
          "<",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:16"
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/File.sol",
        "file": "./File.sol",
        "id": 3973,
        "nodeType": "ImportDirective",
        "scope": 4038,
        "sourceUnit": 2343,
        "src": "57:20:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/Document.sol",
        "file": "./Document.sol",
        "id": 3974,
        "nodeType": "ImportDirective",
        "scope": 4038,
        "sourceUnit": 2212,
        "src": "78:24:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/Event.sol",
        "file": "./Event.sol",
        "id": 3975,
        "nodeType": "ImportDirective",
        "scope": 4038,
        "sourceUnit": 2254,
        "src": "103:21:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          2211,
          2253,
          2342
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 4037,
        "linearizedBaseContracts": [
          4037
        ],
        "name": "SignatureDeployer",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 3978,
              "nodeType": "Block",
              "src": "182:2:16",
              "statements": []
            },
            "documentation": null,
            "id": 3979,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3976,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "172:2:16"
            },
            "returnParameters": {
              "id": 3977,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "182:0:16"
            },
            "scope": 4037,
            "src": "161:23:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3993,
              "nodeType": "Block",
              "src": "291:49:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3989,
                            "name": "fileId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3981,
                            "src": "325:6:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 3988,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "316:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$returns$_t_contract$_File_$2342_$",
                            "typeString": "function (string memory) returns (contract File)"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 3987,
                            "name": "File",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 2342,
                            "src": "320:4:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_File_$2342",
                              "typeString": "contract File"
                            }
                          }
                        },
                        "id": 3990,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "316:16:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_File_$2342",
                          "typeString": "contract File"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_File_$2342",
                          "typeString": "contract File"
                        }
                      ],
                      "id": 3986,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "308:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 3991,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "308:25:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 3985,
                  "id": 3992,
                  "nodeType": "Return",
                  "src": "301:32:16"
                }
              ]
            },
            "documentation": null,
            "id": 3994,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deployFile",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3981,
                  "name": "fileId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3994,
                  "src": "219:20:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3980,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "219:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "209:36:16"
            },
            "returnParameters": {
              "id": 3985,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3984,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3994,
                  "src": "278:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3983,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "278:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "277:9:16"
            },
            "scope": 4037,
            "src": "190:150:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4011,
              "nodeType": "Block",
              "src": "481:67:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4006,
                            "name": "documentId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3996,
                            "src": "519:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4007,
                            "name": "deployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3998,
                            "src": "531:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "506:12:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_address_$returns$_t_contract$_Document_$2211_$",
                            "typeString": "function (string memory,address) returns (contract Document)"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 4004,
                            "name": "Document",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 2211,
                            "src": "510:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Document_$2211",
                              "typeString": "contract Document"
                            }
                          }
                        },
                        "id": 4008,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "506:34:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Document_$2211",
                          "typeString": "contract Document"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Document_$2211",
                          "typeString": "contract Document"
                        }
                      ],
                      "id": 4003,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "498:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 4009,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "498:43:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 4002,
                  "id": 4010,
                  "nodeType": "Return",
                  "src": "491:50:16"
                }
              ]
            },
            "documentation": null,
            "id": 4012,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deployDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3999,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3996,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4012,
                  "src": "379:24:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3995,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "379:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3998,
                  "name": "deployer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4012,
                  "src": "413:16:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3997,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "413:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "369:66:16"
            },
            "returnParameters": {
              "id": 4002,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4001,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4012,
                  "src": "468:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4000,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "468:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "467:9:16"
            },
            "scope": 4037,
            "src": "346:202:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4035,
              "nodeType": "Block",
              "src": "757:194:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4028,
                            "name": "eventId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4014,
                            "src": "822:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4029,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4016,
                            "src": "847:9:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4030,
                            "name": "eventUserAgent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4018,
                            "src": "874:14:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4031,
                            "name": "eventCreatedAt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4020,
                            "src": "906:14:16",
                            "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_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 4027,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "795:9:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$returns$_t_contract$_Event_$2253_$",
                            "typeString": "function (string memory,string memory,string memory,uint256) returns (contract Event)"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 4026,
                            "name": "Event",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 2253,
                            "src": "799:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Event_$2253",
                              "typeString": "contract Event"
                            }
                          }
                        },
                        "id": 4032,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "795:139:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Event_$2253",
                          "typeString": "contract Event"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Event_$2253",
                          "typeString": "contract Event"
                        }
                      ],
                      "id": 4025,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "774:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 4033,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "774:170:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 4024,
                  "id": 4034,
                  "nodeType": "Return",
                  "src": "767:177:16"
                }
              ]
            },
            "documentation": null,
            "id": 4036,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deployEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4021,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4014,
                  "name": "eventId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4036,
                  "src": "584:21:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4013,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "584:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4016,
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "scope": 4036,
                  "src": "615:23:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4015,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "615:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4018,
                  "name": "eventUserAgent",
                  "nodeType": "VariableDeclaration",
                  "scope": 4036,
                  "src": "648:28:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4017,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "648:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4020,
                  "name": "eventCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 4036,
                  "src": "686:19:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4019,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "686:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "574:137:16"
            },
            "returnParameters": {
              "id": 4024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4023,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4036,
                  "src": "744:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4022,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "744:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "743:9:16"
            },
            "scope": 4037,
            "src": "554:397:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 4038,
        "src": "127:826:16"
      }
    ],
    "src": "0:954:16"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.3",
  "updatedAt": "2020-01-15T10:55:50.275Z"
}