{
  "name": "TemplateStoreExtraFunctionality",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "actorType",
          "type": "string"
        }
      ],
      "name": "getTemplateActorTypeId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x05497def"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_Id",
          "type": "bytes32"
        }
      ],
      "name": "getTemplateActorTypeValue",
      "outputs": [
        {
          "name": "actorType",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x08c57d7c"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_id",
          "type": "address"
        },
        {
          "name": "_conditionTypes",
          "type": "address[]"
        },
        {
          "name": "_actorTypeIds",
          "type": "bytes32[]"
        },
        {
          "name": "name",
          "type": "string"
        }
      ],
      "name": "proposeTemplate",
      "outputs": [
        {
          "name": "size",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x09a56316"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_id",
          "type": "bytes32"
        }
      ],
      "name": "approveTemplate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x19974adf"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "templateName",
          "type": "string"
        }
      ],
      "name": "generateId",
      "outputs": [
        {
          "name": "Id",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function",
      "signature": "0x19a9c2f1"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_id",
          "type": "bytes32"
        }
      ],
      "name": "revokeTemplate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x3d4e7cc8"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_Id",
          "type": "bytes32"
        }
      ],
      "name": "getTemplateActorTypeState",
      "outputs": [
        {
          "name": "state",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x4441ce05"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_id",
          "type": "bytes32"
        }
      ],
      "name": "isTemplateIdApproved",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x50669e84"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_Id",
          "type": "bytes32"
        }
      ],
      "name": "deregisterTemplateActorType",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x5e4cd44c"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_id",
          "type": "bytes32"
        },
        {
          "name": "_conditionTypes",
          "type": "address[]"
        },
        {
          "name": "_actorTypeIds",
          "type": "bytes32[]"
        },
        {
          "name": "name",
          "type": "string"
        }
      ],
      "name": "proposeTemplate",
      "outputs": [
        {
          "name": "size",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x63b476d7"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x715018a6"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getTemplateListSize",
      "outputs": [
        {
          "name": "size",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x722e0b0e"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x8da5cb5b"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x8f32d59b"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_id",
          "type": "bytes32"
        }
      ],
      "name": "getTemplate",
      "outputs": [
        {
          "name": "state",
          "type": "uint8"
        },
        {
          "name": "owner",
          "type": "address"
        },
        {
          "name": "lastUpdatedBy",
          "type": "address"
        },
        {
          "name": "blockNumberUpdated",
          "type": "uint256"
        },
        {
          "name": "conditionTypes",
          "type": "address[]"
        },
        {
          "name": "actorTypes",
          "type": "bytes32[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x9757739b"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_id",
          "type": "address"
        }
      ],
      "name": "isTemplateApproved",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xb727a255"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getTemplateActorTypeIds",
      "outputs": [
        {
          "name": "actorTypes",
          "type": "bytes32[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xbb0ceaa1"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0xc4d66de8"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0xf2fde38b"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_actorType",
          "type": "string"
        }
      ],
      "name": "registerTemplateActorType",
      "outputs": [
        {
          "name": "actorTypeId",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0xf9acae19"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "Id",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "name",
          "type": "string"
        },
        {
          "indexed": false,
          "name": "conditionTypes",
          "type": "address[]"
        },
        {
          "indexed": false,
          "name": "actorTypeIds",
          "type": "bytes32[]"
        }
      ],
      "name": "TemplateProposed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "Id",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "state",
          "type": "bool"
        }
      ],
      "name": "TemplateApproved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "Id",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "state",
          "type": "bool"
        }
      ],
      "name": "TemplateRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "dummyFunction",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function",
      "signature": "0x7ec9d81f"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50611d44806100206000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063715018a6116100b85780639757739b1161007c5780639757739b146106aa578063b727a255146107ae578063bb0ceaa1146107d4578063c4d66de81461082c578063f2fde38b14610852578063f9acae191461087857610137565b8063715018a614610666578063722e0b0e1461066e5780637ec9d81f146106765780638da5cb5b1461067e5780638f32d59b146106a257610137565b80633d4e7cc8116100ff5780633d4e7cc81461042f5780634441ce051461044c57806350669e84146104695780635e4cd44c1461049a57806363b476d7146104b757610137565b806305497def1461013c57806308c57d7c146101bc57806309a563161461024e57806319974adf1461036c57806319a9c2f11461038b575b600080fd5b6101aa6004803603602081101561015257600080fd5b810190602081018135600160201b81111561016c57600080fd5b82018360208201111561017e57600080fd5b803590602001918460018302840111600160201b8311171561019f57600080fd5b5090925090506108e6565b60408051918252519081900360200190f35b6101d9600480360360208110156101d257600080fd5b5035610938565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102135781810151838201526020016101fb565b50505050905090810190601f1680156102405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101aa6004803603608081101561026457600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561028e57600080fd5b8201836020820111156102a057600080fd5b803590602001918460208302840111600160201b831117156102c157600080fd5b919390929091602081019035600160201b8111156102de57600080fd5b8201836020820111156102f057600080fd5b803590602001918460208302840111600160201b8311171561031157600080fd5b919390929091602081019035600160201b81111561032e57600080fd5b82018360208201111561034057600080fd5b803590602001918460018302840111600160201b8311171561036157600080fd5b5090925090506109d9565b6103896004803603602081101561038257600080fd5b5035610ac9565b005b6101aa600480360360208110156103a157600080fd5b810190602081018135600160201b8111156103bb57600080fd5b8201836020820111156103cd57600080fd5b803590602001918460018302840111600160201b831117156103ee57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b99945050505050565b6103896004803603602081101561044557600080fd5b5035610c10565b6101aa6004803603602081101561046257600080fd5b5035610d3d565b6104866004803603602081101561047f57600080fd5b5035610d63565b604080519115158252519081900360200190f35b610389600480360360208110156104b057600080fd5b5035610d8b565b6101aa600480360360808110156104cd57600080fd5b81359190810190604081016020820135600160201b8111156104ee57600080fd5b82018360208201111561050057600080fd5b803590602001918460208302840111600160201b8311171561052157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561057057600080fd5b82018360208201111561058257600080fd5b803590602001918460208302840111600160201b831117156105a357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156105f257600080fd5b82018360208201111561060457600080fd5b803590602001918460018302840111600160201b8311171561062557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610db0945050505050565b610389610f46565b6101aa610fa1565b610486610fa8565b610686610fad565b604080516001600160a01b039092168252519081900360200190f35b610486610fbc565b6106c7600480360360208110156106c057600080fd5b5035610fcd565b604051808760038111156106d757fe5b60ff168152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561075557818101518382015260200161073d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561079457818101518382015260200161077c565b505050509050019850505050505050505060405180910390f35b610486600480360360208110156107c457600080fd5b50356001600160a01b03166110d7565b6107dc611102565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610818578181015183820152602001610800565b505050509050019250505060405180910390f35b6103896004803603602081101561084257600080fd5b50356001600160a01b031661115d565b6103896004803603602081101561086857600080fd5b50356001600160a01b031661126a565b6101aa6004803603602081101561088e57600080fd5b810190602081018135600160201b8111156108a857600080fd5b8201836020820111156108ba57600080fd5b803590602001918460018302840111600160201b831117156108db57600080fd5b509092509050611284565b600061093183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250606a9392505063ffffffff6112e0169050565b9392505050565b6000818152606a602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156109cd5780601f106109a2576101008083540402835291602001916109cd565b820191906000526020600020905b8154815290600101906020018083116109b057829003601f168201915b50505050509050919050565b6000808860405160200180826001600160a01b03166001600160a01b031660601b8152601401915050604051602081830303815290604052805190602001209050610abc8189898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250610db092505050565b9998505050505050505050565b610ad1610fbc565b610ada57600080fd5b610aeb60688263ffffffff6113d516565b600260008281526068602052604090205460ff166003811115610b0a57fe5b14610b5f5760408051600160e51b62461bcd02815260206004820152601a60248201527f556e61626c6520746f20617070726f76652074656d706c617465000000000000604482015290519081900360640190fd5b6040805160018152905182917fad91d966b56053c328b448a78e37b4ac4f80dfe07d974f061a736ef4ab2d896d919081900360200190a250565b6000816040516020018082805190602001908083835b60208310610bce5780518252601f199092019160209182019101610baf565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001209050919050565b80610c19610fbc565b80610c3f575060008181526068602052604090205461010090046001600160a01b031633145b610c7d57604051600160e51b62461bcd028152600401808060200182810382526028815260200180611cc36028913960400191505060405180910390fd5b610c8e60688363ffffffff61149616565b600360008381526068602052604090205460ff166003811115610cad57fe5b14610d025760408051600160e51b62461bcd02815260206004820152601960248201527f556e61626c6520746f207265766f6b652074656d706c61746500000000000000604482015290519081900360640190fd5b6040805160018152905183917f789aa870445d1c1019af51e8e321a07c872940e031ed9ab481ce9bcfc75d2f9b919081900360200190a25050565b6000818152606a602052604081206001015460ff166002811115610d5d57fe5b92915050565b6000600260008381526068602052604090205460ff166003811115610d8457fe5b1492915050565b610d93610fbc565b610d9c57600080fd5b610dad606a8263ffffffff61152a16565b50565b60695460009081610dca606888888863ffffffff61154916565b9050818111610e235760408051600160e51b62461bcd02815260206004820152601a60248201527f556e61626c6520746f2070726f706f73652074656d706c617465000000000000604482015290519081900360640190fd5b836040518082805190602001908083835b60208310610e535780518252601f199092019160209182019101610e34565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020877f0a4c4eaaff6fbb3e55708fb33d47d4fcdf7a644ad6fa048c98295ec4531e4b128888604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610ee8578181015183820152602001610ed0565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610f27578181015183820152602001610f0f565b5050505090500194505050505060405180910390a39695505050505050565b610f4e610fbc565b610f5757600080fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b6069545b90565b600190565b6033546001600160a01b031690565b6033546001600160a01b0316331490565b6000818152606860209081526040918290208054600182015460028301546003909301805486518187028101870190975280875260ff8416966101009094046001600160a01b039081169693169493606093849391929083018282801561105d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161103f575b50505050509150606860000160008881526020019081526020016000206004018054806020026020016040519081016040528092919081815260200182805480156110c757602002820191906000526020600020905b8154815260200190600101908083116110b3575b5050505050905091939550919395565b600060026001600160a01b03831660009081526066602052604090205460ff166003811115610d8457fe5b6060606a60010180548060200260200160405190810160405280929190818152602001828054801561115357602002820191906000526020600020905b81548152602001906001019080831161113f575b5050505050905090565b600054610100900460ff1680611176575061117661171f565b80611184575060005460ff16155b6111c257604051600160e51b62461bcd02815260040180806020018281038252602e815260200180611ceb602e913960400191505060405180910390fd5b600054610100900460ff161580156111ed576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821661124b5760408051600160e51b62461bcd02815260206004820152600f60248201527f496e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b61125482611725565b8015611266576000805461ff00191690555b5050565b611272610fbc565b61127b57600080fd5b610dad81611819565b600061128e610fbc565b61129757600080fd5b61093183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250606a9392505063ffffffff611888169050565b600080826040516020018082805190602001908083835b602083106113165780518252601f1990920191602091820191016112f7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090506001600281111561136057fe5b60008281526020869052604090206001015460ff16600281111561138057fe5b146109315760408051600160e51b62461bcd02815260206004820152601a60248201527f4163746f72207479706520646f6573206e6f7420657869737421000000000000604482015290519081900360640190fd5b600160008281526020849052604090205460ff1660038111156113f457fe5b146114495760408051600160e51b62461bcd02815260206004820152601560248201527f54656d706c617465206e6f742050726f706f7365640000000000000000000000604482015290519081900360640190fd5b600081815260208390526040902080546002919060ff19166001835b02179055506000908152602091909152604090206001810180546001600160a01b0319163317905543600290910155565b600260008281526020849052604090205460ff1660038111156114b557fe5b1461150a5760408051600160e51b62461bcd02815260206004820152601560248201527f54656d706c617465206e6f7420417070726f7665640000000000000000000000604482015290519081900360640190fd5b600081815260208390526040902080546003919060ff1916600183611465565b600090815260209190915260409020600101805460ff19166002179055565b60008060008581526020879052604090205460ff16600381111561156957fe5b146115be5760408051600160e51b62461bcd02815260206004820152601160248201527f496420616c726561647920657869737473000000000000000000000000000000604482015290519081900360640190fd5b6115c88484611a01565b61161c5760408051600160e51b62461bcd02815260206004820181905260248201527f496e76616c69642070726f706f73656420636f6e646974696f6e207479706573604482015290519081900360640190fd5b6040805160c0810190915280600181523360208083018290526040808401929092524360608401526080830187905260a0909201859052600087815291889052902081518154829060ff1916600183600381111561167657fe5b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408401516001840180546001600160a01b0319169190921617905560608301516002830155608083015180516116dd9260038501920190611b6b565b5060a082015180516116f9916004840191602090910190611bd0565b505050506001938401805494850181556000818152602090209094019290925550505490565b303b1590565b600054610100900460ff168061173e575061173e61171f565b8061174c575060005460ff16155b61178a57604051600160e51b62461bcd02815260040180806020018281038252602e815260200180611ceb602e913960400191505060405180910390fd5b600054610100900460ff161580156117b5576000805460ff1961ff0019909116610100171660011790555b603380546001600160a01b0319166001600160a01b0384811691909117918290556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38015611266576000805461ff00191690555050565b6001600160a01b03811661182c57600080fd5b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b600080826040516020018082805190602001908083835b602083106118be5780518252601f19909201916020918201910161189f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090506001600281111561190857fe5b60008281526020869052604090206001015460ff16600281111561192857fe5b141561197e5760408051600160e51b62461bcd02815260206004820152601960248201527f4163746f72207479706520616c72656164792065786973747300000000000000604482015290519081900360640190fd5b6040805180820190915283815260208101600190526000828152602086815260409091208251805191926119b792849290910190611c17565b50602082015160018083018054909160ff19909116908360028111156119d957fe5b0217905550505060018085018054918201815560009081526020902001819055905092915050565b6000805b8251811015611b6157600084848381518110611a1d57fe5b60200260200101518660405160200180848152602001836001600160a01b03166001600160a01b031660601b815260140182815260200193505050506040516020818303038152906040528051906020012090506000848381518110611a7f57fe5b60200260200101519050806001600160a01b031663cb4e57e887886040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015611ad557600080fd5b505afa158015611ae9573d6000803e3d6000fd5b505050506040513d6020811015611aff57600080fd5b50518214611b575760408051600160e51b62461bcd02815260206004820152601660248201527f496e76616c696420636f6e646974696f6e207479706500000000000000000000604482015290519081900360640190fd5b5050600101611a05565b5060019392505050565b828054828255906000526020600020908101928215611bc0579160200282015b82811115611bc057825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611b8b565b50611bcc929150611c84565b5090565b828054828255906000526020600020908101928215611c0b579160200282015b82811115611c0b578251825591602001919060010190611bf0565b50611bcc929150611ca8565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c5857805160ff1916838001178555611c0b565b82800160010185558215611c0b5791820182811115611c0b578251825591602001919060010190611bf0565b610fa591905b80821115611bcc5780546001600160a01b0319168155600101611c8a565b610fa591905b80821115611bcc5760008155600101611cae56fe496e76616c696420636f6e7472616374206f776e6572206f722074656d706c617465206f776e6572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a165627a7a723058203140bce937a5ec756ca3807e967f5a42d70678e797b322d65df344f08d54b9cb0029",
  "address": "0xfa3b7Db5c047336080c1e246eD6f7Ac07fC2e6BD",
  "implementation": "0x354017d196F5A2133dE572F6711A9d0ec47477f8",
  "version": "v0.13.2"
}