{
  "contractName": "Controller",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "_scheme",
          "type": "address"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "unregisterScheme",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_scheme",
          "type": "address"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "getSchemeParameters",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "newController",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newController",
          "type": "address"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "upgradeController",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_globalConstraint",
          "type": "address"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "removeGlobalConstraint",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "avatar",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_params",
          "type": "bytes32[]"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "genericAction",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amountInWei",
          "type": "uint256"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "sendEther",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "uint256"
        },
        {
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "mintTokens",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_externalToken",
          "type": "address"
        },
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_addedValue",
          "type": "uint256"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "externalTokenIncreaseApproval",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "globalConstraintsRegister",
      "outputs": [
        {
          "name": "register",
          "type": "bool"
        },
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "globalConstraints",
      "outputs": [
        {
          "name": "gcAddress",
          "type": "address"
        },
        {
          "name": "params",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "unregisterSelf",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "int256"
        },
        {
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "mintReputation",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "globalConstraintsCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "nativeReputation",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_scheme",
          "type": "address"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "getSchemePermissions",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_scheme",
          "type": "address"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "isSchemeRegistered",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_externalToken",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "externalTokenTransfer",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_externalToken",
          "type": "address"
        },
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_subtractedValue",
          "type": "uint256"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "externalTokenDecreaseApproval",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "schemes",
      "outputs": [
        {
          "name": "paramsHash",
          "type": "bytes32"
        },
        {
          "name": "permissions",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "nativeToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_globalConstraint",
          "type": "address"
        },
        {
          "name": "_params",
          "type": "bytes32"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "addGlobalConstraint",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_scheme",
          "type": "address"
        },
        {
          "name": "_paramsHash",
          "type": "bytes32"
        },
        {
          "name": "_permissions",
          "type": "bytes4"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "registerScheme",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_globalConstraint",
          "type": "address"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "isGlobalConstraintRegistered",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_externalToken",
          "type": "address"
        },
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "externalTokenTransferFrom",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "fallback"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_sender",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_amount",
          "type": "int256"
        }
      ],
      "name": "MintReputation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_sender",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "MintTokens",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_sender",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_scheme",
          "type": "address"
        }
      ],
      "name": "RegisterScheme",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_sender",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_scheme",
          "type": "address"
        }
      ],
      "name": "UnregisterScheme",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_sender",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_params",
          "type": "bytes32[]"
        }
      ],
      "name": "GenericAction",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_sender",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_amountInWei",
          "type": "uint256"
        },
        {
          "indexed": true,
          "name": "_to",
          "type": "address"
        }
      ],
      "name": "SendEther",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_sender",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_externalToken",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "ExternalTokenTransfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_sender",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_externalToken",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "ExternalTokenTransferFrom",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_sender",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_externalToken",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_spender",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "ExternalTokenIncreaseApproval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_sender",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_externalToken",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_spender",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "ExternalTokenDecreaseApproval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_globalConstraint",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_params",
          "type": "bytes32"
        }
      ],
      "name": "AddGlobalConstraint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_globalConstraint",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "RemoveGlobalConstraint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_oldController",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_newController",
          "type": "address"
        }
      ],
      "name": "UpgradeController",
      "type": "event"
    }
  ],
  "bytecode": "0x606060405234156200001057600080fd5b6040516020806200301a8339810160405280805160018054600160a060020a031916600160a060020a03838116919091179182905591935016905063e1758bd86000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515620000a157600080fd5b6102c65a03f11515620000b357600080fd5b505050604051805160028054600160a060020a031916600160a060020a039283161790556001541690506389ae1c906000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200013357600080fd5b6102c65a03f115156200014557600080fd5b505050604051805160038054600160a060020a031916600160a060020a03929092169190911790555060408051908101604090815260008083527c0f00000000000000000000000000000000000000000000000000000000602080850191909152600160a060020a033316825281905220815181556020820151600190910180547c010000000000000000000000000000000000000000000000000000000090920463ffffffff199092169190911790555050612e1280620002086000396000f30060606040526004361061013a5763ffffffff60e060020a600035041663039de01d811461014a5780631c4d5608146101835780633a02263c146101ba57806342427bf8146101e95780634f52b5be1461020e5780635aef7de6146102335780636035174814610246578063634965da146102a05780636407e432146102c8578063644b98ed146102f057806364f47ace1461031f57806365ab1ae8146103585780636c525b13146103905780636cfc6582146103af578063824f2f1f146103d757806389ae1c90146103f65780639b51e35a146104095780639be2faed1461044b578063b9a04cdd14610470578063c6ab78b91461049f578063db6149ce146104ce578063e1758bd81461050f578063e4537a7414610522578063e869d45f1461054b578063f76488be14610582578063fb4856a2146105a7575b341561014557600080fd5b600080fd5b341561015557600080fd5b61016f600160a060020a03600435811690602435166105dc565b604051901515815260200160405180910390f35b341561018e57600080fd5b6101a8600160a060020a036004358116906024351661091a565b60405190815260200160405180910390f35b34156101c557600080fd5b6101cd610936565b604051600160a060020a03909116815260200160405180910390f35b34156101f457600080fd5b61016f600160a060020a0360043581169060243516610945565b341561021957600080fd5b61016f600160a060020a0360043581169060243516610c58565b341561023e57600080fd5b6101cd610e6d565b341561025157600080fd5b61016f600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965050509235600160a060020a03169250610e7c915050565b34156102ab57600080fd5b61016f600435600160a060020a03602435811690604435166111d9565b34156102d357600080fd5b61016f600435600160a060020a03602435811690604435166114bd565b34156102fb57600080fd5b61016f600160a060020a036004358116906024358116906044359060643516611797565b341561032a57600080fd5b61033e600160a060020a0360043516611a99565b604051911515825260208201526040908101905180910390f35b341561036357600080fd5b61036e600435611ab8565b604051600160a060020a03909216825260208201526040908101905180910390f35b341561039b57600080fd5b61016f600160a060020a0360043516611aee565b34156103ba57600080fd5b61016f600435600160a060020a0360243581169060443516611b6b565b34156103e257600080fd5b6101a8600160a060020a0360043516611e45565b341561040157600080fd5b6101cd611e4c565b341561041457600080fd5b61042e600160a060020a0360043581169060243516611e5b565b604051600160e060020a0319909116815260200160405180910390f35b341561045657600080fd5b61016f600160a060020a0360043581169060243516611e80565b341561047b57600080fd5b61016f600160a060020a036004358116906024358116906044359060643516611eaa565b34156104aa57600080fd5b61016f600160a060020a03600435811690602435811690604435906064351661219b565b34156104d957600080fd5b6104ed600160a060020a0360043516612493565b604051918252600160e060020a03191660208201526040908101905180910390f35b341561051a57600080fd5b6101cd6124b2565b341561052d57600080fd5b61016f600160a060020a0360043581169060243590604435166124c1565b341561055657600080fd5b61016f600160a060020a0360043581169060243590600160e060020a031960443516906064351661268c565b341561058d57600080fd5b61016f600160a060020a0360043581169060243516612a2a565b34156105b257600080fd5b61016f600160a060020a036004358116906024358116906044358116906064359060843516612a49565b600160a060020a03331660009081526020819052604081206001015460e060020a027c02000000000000000000000000000000000000000000000000000000009081161461062957600080fd5b7f756e7265676973746572536368656d650000000000000000000000000000000060005b60055481101561072d57600580548290811061066557fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab29133918590811061069857fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156106ff57600080fd5b6102c65a03f1151561071057600080fd5b50505060405180519050151561072557600080fd5b60010161064d565b600160a060020a03851660009081526020819052604090206001015460e060020a908102161515610761576000925061082e565b33600160a060020a0390811660009081526020819052604080822060019081015493891683529120015460e060020a918202199102167c0f0000000000000000000000000000000000000000000000000000000016156107c057600080fd5b84600160a060020a031633600160a060020a03167f10bb2cf04cb8b902a8e736d494f1a51003be6d4b16ef6fb95ce62c38445023bf60405160405180910390a3600160a060020a03851660009081526020819052604081209081556001908101805463ffffffff1916905592505b5060005b60055481101561091257600580548290811061084a57fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d9133918590811061087d57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156108e457600080fd5b6102c65a03f115156108f557600080fd5b50505060405180519050151561090a57600080fd5b600101610832565b505092915050565b50600160a060020a031660009081526020819052604090205490565b600454600160a060020a031681565b600160a060020a03331660009081526020819052604081206001015460e060020a027c08000000000000000000000000000000000000000000000000000000009081161461099257600080fd5b600454600160a060020a0316156109a857600080fd5b600160a060020a03831615156109bd57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03858116919091179091556001541663f2fde38b8460405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610a3257600080fd5b6102c65a03f11515610a4357600080fd5b5050600254600160a060020a03308116925016638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a9257600080fd5b6102c65a03f11515610aa357600080fd5b50505060405180519050600160a060020a03161415610b2157600254600160a060020a031663f2fde38b8460405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610b0c57600080fd5b6102c65a03f11515610b1d57600080fd5b5050505b600354600160a060020a033081169116638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b6d57600080fd5b6102c65a03f11515610b7e57600080fd5b50505060405180519050600160a060020a03161415610bfc57600354600160a060020a031663f2fde38b8460405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610be757600080fd5b6102c65a03f11515610bf857600080fd5b5050505b6004547fdb7cbacf8df312d794506c0cc9af07f64d29ca075796ea2e950a3832cc9a63dd903090600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a150600192915050565b6000610c62612d5f565b610c6a612d5f565b600160a060020a03331660009081526020819052604090206001015460e060020a027c040000000000000000000000000000000000000000000000000000000090811614610cb757600080fd5b600160a060020a03851660009081526006602052604090819020908051908101604052815460ff161515815260019091015460208201529150815115610e62576005546000190160208301511015610dd457600580546000198101908110610d1b57fe5b9060005260206000209060020201604080519081016040528154600160a060020a03168152600190910154602080830191909152909150819060059084015181548110610d6457fe5b90600052602060002090600202016000820151815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03919091161781556020820151600190910155506020820151600660008351600160a060020a031681526020810191909152604001600020600101555b6005805490610de7906000198301612d76565b50600160a060020a03851660009081526006602090815260408220805460ff19168155600101919091557f6ceab662049113d466f7e28b69edbec7cf641bc175522623536b09785887982a908690840151604051600160a060020a03909216825260208201526040908101905180910390a160019250610912565b506000949350505050565b600154600160a060020a031681565b600160a060020a03331660009081526020819052604081206001015460e060020a908102811614610eac57600080fd5b7f67656e65726963416374696f6e0000000000000000000000000000000000000060005b600554811015610fb0576005805482908110610ee857fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab291339185908110610f1b57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515610f8257600080fd5b6102c65a03f11515610f9357600080fd5b505050604051805190501515610fa857600080fd5b600101610ed0565b33600160a060020a03167f8518530cc6bc186721ab2fc226031ca054c8484893d8b0c7faab65a58aac238d8660405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561101b578082015183820152602001611003565b505050509050019250505060405180910390a2600154600160a060020a0316636ce15a5433876000604051602001526040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156110b457808201518382015260200161109c565b505050509050019350505050602060405180830381600087803b15156110d957600080fd5b6102c65a03f115156110ea57600080fd5b50505060405180519350505060005b60055481101561091257600580548290811061111157fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d9133918590811061114457fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156111ab57600080fd5b6102c65a03f115156111bc57600080fd5b5050506040518051905015156111d157600080fd5b6001016110f9565b600160a060020a03331660009081526020819052604081206001015460e060020a90810281161461120957600080fd5b7f73656e644574686572000000000000000000000000000000000000000000000060005b60055481101561130d57600580548290811061124557fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab29133918590811061127857fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156112df57600080fd5b6102c65a03f115156112f057600080fd5b50505060405180519050151561130557600080fd5b60010161122d565b84600160a060020a031633600160a060020a03167fda35e091786fbaaace32084910404a0e3a14f22a7645a4c3d0fec2c6731e3c348860405190815260200160405180910390a3600154600160a060020a031663cb16d4a2878760006040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401602060405180830381600087803b15156113b457600080fd5b6102c65a03f115156113c557600080fd5b50505060405180519350505060005b6005548110156114b45760058054829081106113ec57fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d9133918590811061141f57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b151561148657600080fd5b6102c65a03f1151561149757600080fd5b5050506040518051905015156114ac57600080fd5b6001016113d4565b50509392505050565b600160a060020a03331660009081526020819052604081206001015460e060020a9081028116146114ed57600080fd5b7f6d696e74546f6b656e730000000000000000000000000000000000000000000060005b6005548110156115f157600580548290811061152957fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab29133918590811061155c57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156115c357600080fd5b6102c65a03f115156115d457600080fd5b5050506040518051905015156115e957600080fd5b600101611511565b84600160a060020a031633600160a060020a03167f21f9c9a1a1f9a311a50f15fec5c1faa9e21fc9edf964f0fdecba5bd490484c5e8860405190815260200160405180910390a3600254600160a060020a03166340c10f19868860006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561169757600080fd5b6102c65a03f115156116a857600080fd5b50505060405180519350505060005b6005548110156114b45760058054829081106116cf57fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d9133918590811061170257fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b151561176957600080fd5b6102c65a03f1151561177a57600080fd5b50505060405180519050151561178f57600080fd5b6001016116b7565b600160a060020a03331660009081526020819052604081206001015460e060020a9081028116146117c757600080fd5b7f65787465726e616c546f6b656e496e637265617365417070726f76616c00000060005b6005548110156118cb57600580548290811061180357fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab29133918590811061183657fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b151561189d57600080fd5b6102c65a03f115156118ae57600080fd5b5050506040518051905015156118c357600080fd5b6001016117eb565b86600160a060020a031633600160a060020a03167f2cee0640e7c161518a78fa901d8c0e4b2f51d42612532184a4f017a45b01ba288888604051600160a060020a03909216825260208201526040908101905180910390a3600154600160a060020a0316638cf1355c88888860006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561198f57600080fd5b6102c65a03f115156119a057600080fd5b50505060405180519350505060005b600554811015611a8f5760058054829081106119c757fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d913391859081106119fa57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515611a6157600080fd5b6102c65a03f11515611a7257600080fd5b505050604051805190501515611a8757600080fd5b6001016119af565b5050949350505050565b6006602052600090815260409020805460019091015460ff9091169082565b6005805482908110611ac657fe5b600091825260209091206002909102018054600190910154600160a060020a03909116915082565b6000611afb336000611e80565b1515611b0957506000611b66565b600160a060020a0333166000818152602081905260408082209182556001909101805463ffffffff1916905581907f10bb2cf04cb8b902a8e736d494f1a51003be6d4b16ef6fb95ce62c38445023bf905160405180910390a35060015b919050565b600160a060020a03331660009081526020819052604081206001015460e060020a908102811614611b9b57600080fd5b7f6d696e7452657075746174696f6e00000000000000000000000000000000000060005b600554811015611c9f576005805482908110611bd757fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab291339185908110611c0a57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515611c7157600080fd5b6102c65a03f11515611c8257600080fd5b505050604051805190501515611c9757600080fd5b600101611bbf565b84600160a060020a031633600160a060020a03167fb6ced7e295ffd06d19f45bd872b3bd3fd172b1ba53b17ce0543c276d06f5a4228860405190815260200160405180910390a3600354600160a060020a031663fd9bf3aa868860006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611d4557600080fd5b6102c65a03f11515611d5657600080fd5b50505060405180519350505060005b6005548110156114b4576005805482908110611d7d57fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d91339185908110611db057fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515611e1757600080fd5b6102c65a03f11515611e2857600080fd5b505050604051805190501515611e3d57600080fd5b600101611d65565b5060055490565b600354600160a060020a031681565b50600160a060020a031660009081526020819052604090206001015460e060020a0290565b50600160a060020a031660009081526020819052604090206001015460e060020a90810216151590565b600160a060020a03331660009081526020819052604081206001015460e060020a908102811614611eda57600080fd5b7f65787465726e616c546f6b656e5472616e73666572000000000000000000000060005b600554811015611fde576005805482908110611f1657fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab291339185908110611f4957fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515611fb057600080fd5b6102c65a03f11515611fc157600080fd5b505050604051805190501515611fd657600080fd5b600101611efe565b85600160a060020a031687600160a060020a031633600160a060020a03167fd4c08afec48fd2cbe49032dc89d3b388b7a4e4f0563a1fdccd73339beb025aa18860405190815260200160405180910390a4600154600160a060020a031663dab0efff88888860006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561209b57600080fd5b6102c65a03f115156120ac57600080fd5b50505060405180519350505060005b600554811015611a8f5760058054829081106120d357fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d9133918590811061210657fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b151561216d57600080fd5b6102c65a03f1151561217e57600080fd5b50505060405180519050151561219357600080fd5b6001016120bb565b600160a060020a03331660009081526020819052604081206001015460e060020a9081028116146121cb57600080fd5b7f65787465726e616c546f6b656e4465637265617365417070726f76616c00000060005b6005548110156122cf57600580548290811061220757fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab29133918590811061223a57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156122a157600080fd5b6102c65a03f115156122b257600080fd5b5050506040518051905015156122c757600080fd5b6001016121ef565b86600160a060020a031633600160a060020a03167f56fc1f50d44108d3b715d77eb371d388bf2998c65b4eb5cf0ccd6c055be46d498888604051600160a060020a03909216825260208201526040908101905180910390a3600154600160a060020a031663d29ab9c488888860006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561239357600080fd5b6102c65a03f115156123a457600080fd5b50505060405180519350505060005b600554811015611a8f5760058054829081106123cb57fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d913391859081106123fe57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b151561246557600080fd5b6102c65a03f1151561247657600080fd5b50505060405180519050151561248b57600080fd5b6001016123b3565b6000602081905290815260409020805460019091015460e060020a0282565b600254600160a060020a031681565b600160a060020a03331660009081526020819052604081206001015460e060020a027c04000000000000000000000000000000000000000000000000000000009081161461250e57600080fd5b600160a060020a03841660009081526006602052604090205460ff1615156125fe5760058054600181016125428382612d76565b9160005260206000209060020201600060408051908101604052600160a060020a0388168152602081018790529190508151815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039190911617815560208201516001909101555060409050805190810160409081526001825260055460001901602080840191909152600160a060020a03871660009081526006909152208151815460ff191690151517815560208201516001909101555061263e565b600160a060020a03841660009081526006602052604090206001015460058054859290811061262957fe5b60009182526020909120600160029092020101555b7f6f3ac186000a779fe66d0a5188f51993a6593d93c4ff052ec0453aa84f09dbcb8484604051600160a060020a03909216825260208201526040908101905180910390a15060019392505050565b6000612696612d5f565b600160a060020a03331660009081526020819052604090206001015460e060020a027c0200000000000000000000000000000000000000000000000000000000908116146126e357600080fd5b7f7265676973746572536368656d6500000000000000000000000000000000000060005b6005548110156127e757600580548290811061271f57fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab29133918590811061275257fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156127b957600080fd5b6102c65a03f115156127ca57600080fd5b5050506040518051905015156127df57600080fd5b600101612707565b600160a060020a03881660009081526020819052604090819020908051908101604090815282548252600192830154600160e060020a031960e060020a918202166020808501918252600160a060020a03331660009081529081905292832090940154929650909291021990518818167c0f00000000000000000000000000000000000000000000000000000000161461288057600080fd5b600160a060020a03331660009081526020818152604082206001015460e060020a021990850151167c0f0000000000000000000000000000000000000000000000000000000016146128d157600080fd5b600160a060020a03888116600081815260208190526040908190208a8155600101805463ffffffff191660e060020a8b81170417905590913316907f546816e99403df442acb68ef69562682a50762c20a3fb6b472f7af9923736cfc905160405180910390a3600193505060005b600554811015612a1f57600580548290811061295757fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d9133918590811061298a57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156129f157600080fd5b6102c65a03f11515612a0257600080fd5b505050604051805190501515612a1757600080fd5b60010161293f565b505050949350505050565b50600160a060020a031660009081526006602052604090205460ff1690565b600160a060020a03331660009081526020819052604081206001015460e060020a908102811614612a7957600080fd5b7f65787465726e616c546f6b656e5472616e7366657246726f6d0000000000000060005b600554811015612b7d576005805482908110612ab557fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab291339185908110612ae857fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515612b4f57600080fd5b6102c65a03f11515612b6057600080fd5b505050604051805190501515612b7557600080fd5b600101612a9d565b87600160a060020a031633600160a060020a03167f283faba4b8dcfe263728666be500623fdf5ae89ac78e40952fe2493f918ed62c898989604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a3600154600160a060020a031663b756d5a28989898960006040516020015260405160e060020a63ffffffff8716028152600160a060020a0394851660048201529284166024840152921660448201526064810191909152608401602060405180830381600087803b1515612c5457600080fd5b6102c65a03f11515612c6557600080fd5b50505060405180519350505060005b600554811015612d54576005805482908110612c8c57fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d91339185908110612cbf57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515612d2657600080fd5b6102c65a03f11515612d3757600080fd5b505050604051805190501515612d4c57600080fd5b600101612c74565b505095945050505050565b604080519081016040526000808252602082015290565b815481835581811511612da257600202816002028360005260206000209182019101612da29190612da7565b505050565b612de391905b80821115612ddf57805473ffffffffffffffffffffffffffffffffffffffff1916815560006001820155600201612dad565b5090565b905600a165627a7a72305820645d61722e519e71a0e8c56d47a7117ab6cec4dd9955e1bab84bbc45dd31b5670029",
  "deployedBytecode": "0x60606040526004361061013a5763ffffffff60e060020a600035041663039de01d811461014a5780631c4d5608146101835780633a02263c146101ba57806342427bf8146101e95780634f52b5be1461020e5780635aef7de6146102335780636035174814610246578063634965da146102a05780636407e432146102c8578063644b98ed146102f057806364f47ace1461031f57806365ab1ae8146103585780636c525b13146103905780636cfc6582146103af578063824f2f1f146103d757806389ae1c90146103f65780639b51e35a146104095780639be2faed1461044b578063b9a04cdd14610470578063c6ab78b91461049f578063db6149ce146104ce578063e1758bd81461050f578063e4537a7414610522578063e869d45f1461054b578063f76488be14610582578063fb4856a2146105a7575b341561014557600080fd5b600080fd5b341561015557600080fd5b61016f600160a060020a03600435811690602435166105dc565b604051901515815260200160405180910390f35b341561018e57600080fd5b6101a8600160a060020a036004358116906024351661091a565b60405190815260200160405180910390f35b34156101c557600080fd5b6101cd610936565b604051600160a060020a03909116815260200160405180910390f35b34156101f457600080fd5b61016f600160a060020a0360043581169060243516610945565b341561021957600080fd5b61016f600160a060020a0360043581169060243516610c58565b341561023e57600080fd5b6101cd610e6d565b341561025157600080fd5b61016f600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965050509235600160a060020a03169250610e7c915050565b34156102ab57600080fd5b61016f600435600160a060020a03602435811690604435166111d9565b34156102d357600080fd5b61016f600435600160a060020a03602435811690604435166114bd565b34156102fb57600080fd5b61016f600160a060020a036004358116906024358116906044359060643516611797565b341561032a57600080fd5b61033e600160a060020a0360043516611a99565b604051911515825260208201526040908101905180910390f35b341561036357600080fd5b61036e600435611ab8565b604051600160a060020a03909216825260208201526040908101905180910390f35b341561039b57600080fd5b61016f600160a060020a0360043516611aee565b34156103ba57600080fd5b61016f600435600160a060020a0360243581169060443516611b6b565b34156103e257600080fd5b6101a8600160a060020a0360043516611e45565b341561040157600080fd5b6101cd611e4c565b341561041457600080fd5b61042e600160a060020a0360043581169060243516611e5b565b604051600160e060020a0319909116815260200160405180910390f35b341561045657600080fd5b61016f600160a060020a0360043581169060243516611e80565b341561047b57600080fd5b61016f600160a060020a036004358116906024358116906044359060643516611eaa565b34156104aa57600080fd5b61016f600160a060020a03600435811690602435811690604435906064351661219b565b34156104d957600080fd5b6104ed600160a060020a0360043516612493565b604051918252600160e060020a03191660208201526040908101905180910390f35b341561051a57600080fd5b6101cd6124b2565b341561052d57600080fd5b61016f600160a060020a0360043581169060243590604435166124c1565b341561055657600080fd5b61016f600160a060020a0360043581169060243590600160e060020a031960443516906064351661268c565b341561058d57600080fd5b61016f600160a060020a0360043581169060243516612a2a565b34156105b257600080fd5b61016f600160a060020a036004358116906024358116906044358116906064359060843516612a49565b600160a060020a03331660009081526020819052604081206001015460e060020a027c02000000000000000000000000000000000000000000000000000000009081161461062957600080fd5b7f756e7265676973746572536368656d650000000000000000000000000000000060005b60055481101561072d57600580548290811061066557fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab29133918590811061069857fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156106ff57600080fd5b6102c65a03f1151561071057600080fd5b50505060405180519050151561072557600080fd5b60010161064d565b600160a060020a03851660009081526020819052604090206001015460e060020a908102161515610761576000925061082e565b33600160a060020a0390811660009081526020819052604080822060019081015493891683529120015460e060020a918202199102167c0f0000000000000000000000000000000000000000000000000000000016156107c057600080fd5b84600160a060020a031633600160a060020a03167f10bb2cf04cb8b902a8e736d494f1a51003be6d4b16ef6fb95ce62c38445023bf60405160405180910390a3600160a060020a03851660009081526020819052604081209081556001908101805463ffffffff1916905592505b5060005b60055481101561091257600580548290811061084a57fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d9133918590811061087d57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156108e457600080fd5b6102c65a03f115156108f557600080fd5b50505060405180519050151561090a57600080fd5b600101610832565b505092915050565b50600160a060020a031660009081526020819052604090205490565b600454600160a060020a031681565b600160a060020a03331660009081526020819052604081206001015460e060020a027c08000000000000000000000000000000000000000000000000000000009081161461099257600080fd5b600454600160a060020a0316156109a857600080fd5b600160a060020a03831615156109bd57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03858116919091179091556001541663f2fde38b8460405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610a3257600080fd5b6102c65a03f11515610a4357600080fd5b5050600254600160a060020a03308116925016638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a9257600080fd5b6102c65a03f11515610aa357600080fd5b50505060405180519050600160a060020a03161415610b2157600254600160a060020a031663f2fde38b8460405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610b0c57600080fd5b6102c65a03f11515610b1d57600080fd5b5050505b600354600160a060020a033081169116638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b6d57600080fd5b6102c65a03f11515610b7e57600080fd5b50505060405180519050600160a060020a03161415610bfc57600354600160a060020a031663f2fde38b8460405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610be757600080fd5b6102c65a03f11515610bf857600080fd5b5050505b6004547fdb7cbacf8df312d794506c0cc9af07f64d29ca075796ea2e950a3832cc9a63dd903090600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a150600192915050565b6000610c62612d5f565b610c6a612d5f565b600160a060020a03331660009081526020819052604090206001015460e060020a027c040000000000000000000000000000000000000000000000000000000090811614610cb757600080fd5b600160a060020a03851660009081526006602052604090819020908051908101604052815460ff161515815260019091015460208201529150815115610e62576005546000190160208301511015610dd457600580546000198101908110610d1b57fe5b9060005260206000209060020201604080519081016040528154600160a060020a03168152600190910154602080830191909152909150819060059084015181548110610d6457fe5b90600052602060002090600202016000820151815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03919091161781556020820151600190910155506020820151600660008351600160a060020a031681526020810191909152604001600020600101555b6005805490610de7906000198301612d76565b50600160a060020a03851660009081526006602090815260408220805460ff19168155600101919091557f6ceab662049113d466f7e28b69edbec7cf641bc175522623536b09785887982a908690840151604051600160a060020a03909216825260208201526040908101905180910390a160019250610912565b506000949350505050565b600154600160a060020a031681565b600160a060020a03331660009081526020819052604081206001015460e060020a908102811614610eac57600080fd5b7f67656e65726963416374696f6e0000000000000000000000000000000000000060005b600554811015610fb0576005805482908110610ee857fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab291339185908110610f1b57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515610f8257600080fd5b6102c65a03f11515610f9357600080fd5b505050604051805190501515610fa857600080fd5b600101610ed0565b33600160a060020a03167f8518530cc6bc186721ab2fc226031ca054c8484893d8b0c7faab65a58aac238d8660405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561101b578082015183820152602001611003565b505050509050019250505060405180910390a2600154600160a060020a0316636ce15a5433876000604051602001526040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156110b457808201518382015260200161109c565b505050509050019350505050602060405180830381600087803b15156110d957600080fd5b6102c65a03f115156110ea57600080fd5b50505060405180519350505060005b60055481101561091257600580548290811061111157fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d9133918590811061114457fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156111ab57600080fd5b6102c65a03f115156111bc57600080fd5b5050506040518051905015156111d157600080fd5b6001016110f9565b600160a060020a03331660009081526020819052604081206001015460e060020a90810281161461120957600080fd5b7f73656e644574686572000000000000000000000000000000000000000000000060005b60055481101561130d57600580548290811061124557fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab29133918590811061127857fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156112df57600080fd5b6102c65a03f115156112f057600080fd5b50505060405180519050151561130557600080fd5b60010161122d565b84600160a060020a031633600160a060020a03167fda35e091786fbaaace32084910404a0e3a14f22a7645a4c3d0fec2c6731e3c348860405190815260200160405180910390a3600154600160a060020a031663cb16d4a2878760006040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401602060405180830381600087803b15156113b457600080fd5b6102c65a03f115156113c557600080fd5b50505060405180519350505060005b6005548110156114b45760058054829081106113ec57fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d9133918590811061141f57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b151561148657600080fd5b6102c65a03f1151561149757600080fd5b5050506040518051905015156114ac57600080fd5b6001016113d4565b50509392505050565b600160a060020a03331660009081526020819052604081206001015460e060020a9081028116146114ed57600080fd5b7f6d696e74546f6b656e730000000000000000000000000000000000000000000060005b6005548110156115f157600580548290811061152957fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab29133918590811061155c57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156115c357600080fd5b6102c65a03f115156115d457600080fd5b5050506040518051905015156115e957600080fd5b600101611511565b84600160a060020a031633600160a060020a03167f21f9c9a1a1f9a311a50f15fec5c1faa9e21fc9edf964f0fdecba5bd490484c5e8860405190815260200160405180910390a3600254600160a060020a03166340c10f19868860006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561169757600080fd5b6102c65a03f115156116a857600080fd5b50505060405180519350505060005b6005548110156114b45760058054829081106116cf57fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d9133918590811061170257fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b151561176957600080fd5b6102c65a03f1151561177a57600080fd5b50505060405180519050151561178f57600080fd5b6001016116b7565b600160a060020a03331660009081526020819052604081206001015460e060020a9081028116146117c757600080fd5b7f65787465726e616c546f6b656e496e637265617365417070726f76616c00000060005b6005548110156118cb57600580548290811061180357fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab29133918590811061183657fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b151561189d57600080fd5b6102c65a03f115156118ae57600080fd5b5050506040518051905015156118c357600080fd5b6001016117eb565b86600160a060020a031633600160a060020a03167f2cee0640e7c161518a78fa901d8c0e4b2f51d42612532184a4f017a45b01ba288888604051600160a060020a03909216825260208201526040908101905180910390a3600154600160a060020a0316638cf1355c88888860006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561198f57600080fd5b6102c65a03f115156119a057600080fd5b50505060405180519350505060005b600554811015611a8f5760058054829081106119c757fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d913391859081106119fa57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515611a6157600080fd5b6102c65a03f11515611a7257600080fd5b505050604051805190501515611a8757600080fd5b6001016119af565b5050949350505050565b6006602052600090815260409020805460019091015460ff9091169082565b6005805482908110611ac657fe5b600091825260209091206002909102018054600190910154600160a060020a03909116915082565b6000611afb336000611e80565b1515611b0957506000611b66565b600160a060020a0333166000818152602081905260408082209182556001909101805463ffffffff1916905581907f10bb2cf04cb8b902a8e736d494f1a51003be6d4b16ef6fb95ce62c38445023bf905160405180910390a35060015b919050565b600160a060020a03331660009081526020819052604081206001015460e060020a908102811614611b9b57600080fd5b7f6d696e7452657075746174696f6e00000000000000000000000000000000000060005b600554811015611c9f576005805482908110611bd757fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab291339185908110611c0a57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515611c7157600080fd5b6102c65a03f11515611c8257600080fd5b505050604051805190501515611c9757600080fd5b600101611bbf565b84600160a060020a031633600160a060020a03167fb6ced7e295ffd06d19f45bd872b3bd3fd172b1ba53b17ce0543c276d06f5a4228860405190815260200160405180910390a3600354600160a060020a031663fd9bf3aa868860006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611d4557600080fd5b6102c65a03f11515611d5657600080fd5b50505060405180519350505060005b6005548110156114b4576005805482908110611d7d57fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d91339185908110611db057fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515611e1757600080fd5b6102c65a03f11515611e2857600080fd5b505050604051805190501515611e3d57600080fd5b600101611d65565b5060055490565b600354600160a060020a031681565b50600160a060020a031660009081526020819052604090206001015460e060020a0290565b50600160a060020a031660009081526020819052604090206001015460e060020a90810216151590565b600160a060020a03331660009081526020819052604081206001015460e060020a908102811614611eda57600080fd5b7f65787465726e616c546f6b656e5472616e73666572000000000000000000000060005b600554811015611fde576005805482908110611f1657fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab291339185908110611f4957fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515611fb057600080fd5b6102c65a03f11515611fc157600080fd5b505050604051805190501515611fd657600080fd5b600101611efe565b85600160a060020a031687600160a060020a031633600160a060020a03167fd4c08afec48fd2cbe49032dc89d3b388b7a4e4f0563a1fdccd73339beb025aa18860405190815260200160405180910390a4600154600160a060020a031663dab0efff88888860006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561209b57600080fd5b6102c65a03f115156120ac57600080fd5b50505060405180519350505060005b600554811015611a8f5760058054829081106120d357fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d9133918590811061210657fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b151561216d57600080fd5b6102c65a03f1151561217e57600080fd5b50505060405180519050151561219357600080fd5b6001016120bb565b600160a060020a03331660009081526020819052604081206001015460e060020a9081028116146121cb57600080fd5b7f65787465726e616c546f6b656e4465637265617365417070726f76616c00000060005b6005548110156122cf57600580548290811061220757fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab29133918590811061223a57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156122a157600080fd5b6102c65a03f115156122b257600080fd5b5050506040518051905015156122c757600080fd5b6001016121ef565b86600160a060020a031633600160a060020a03167f56fc1f50d44108d3b715d77eb371d388bf2998c65b4eb5cf0ccd6c055be46d498888604051600160a060020a03909216825260208201526040908101905180910390a3600154600160a060020a031663d29ab9c488888860006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561239357600080fd5b6102c65a03f115156123a457600080fd5b50505060405180519350505060005b600554811015611a8f5760058054829081106123cb57fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d913391859081106123fe57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b151561246557600080fd5b6102c65a03f1151561247657600080fd5b50505060405180519050151561248b57600080fd5b6001016123b3565b6000602081905290815260409020805460019091015460e060020a0282565b600254600160a060020a031681565b600160a060020a03331660009081526020819052604081206001015460e060020a027c04000000000000000000000000000000000000000000000000000000009081161461250e57600080fd5b600160a060020a03841660009081526006602052604090205460ff1615156125fe5760058054600181016125428382612d76565b9160005260206000209060020201600060408051908101604052600160a060020a0388168152602081018790529190508151815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039190911617815560208201516001909101555060409050805190810160409081526001825260055460001901602080840191909152600160a060020a03871660009081526006909152208151815460ff191690151517815560208201516001909101555061263e565b600160a060020a03841660009081526006602052604090206001015460058054859290811061262957fe5b60009182526020909120600160029092020101555b7f6f3ac186000a779fe66d0a5188f51993a6593d93c4ff052ec0453aa84f09dbcb8484604051600160a060020a03909216825260208201526040908101905180910390a15060019392505050565b6000612696612d5f565b600160a060020a03331660009081526020819052604090206001015460e060020a027c0200000000000000000000000000000000000000000000000000000000908116146126e357600080fd5b7f7265676973746572536368656d6500000000000000000000000000000000000060005b6005548110156127e757600580548290811061271f57fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab29133918590811061275257fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156127b957600080fd5b6102c65a03f115156127ca57600080fd5b5050506040518051905015156127df57600080fd5b600101612707565b600160a060020a03881660009081526020819052604090819020908051908101604090815282548252600192830154600160e060020a031960e060020a918202166020808501918252600160a060020a03331660009081529081905292832090940154929650909291021990518818167c0f00000000000000000000000000000000000000000000000000000000161461288057600080fd5b600160a060020a03331660009081526020818152604082206001015460e060020a021990850151167c0f0000000000000000000000000000000000000000000000000000000016146128d157600080fd5b600160a060020a03888116600081815260208190526040908190208a8155600101805463ffffffff191660e060020a8b81170417905590913316907f546816e99403df442acb68ef69562682a50762c20a3fb6b472f7af9923736cfc905160405180910390a3600193505060005b600554811015612a1f57600580548290811061295757fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d9133918590811061298a57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156129f157600080fd5b6102c65a03f11515612a0257600080fd5b505050604051805190501515612a1757600080fd5b60010161293f565b505050949350505050565b50600160a060020a031660009081526006602052604090205460ff1690565b600160a060020a03331660009081526020819052604081206001015460e060020a908102811614612a7957600080fd5b7f65787465726e616c546f6b656e5472616e7366657246726f6d0000000000000060005b600554811015612b7d576005805482908110612ab557fe5b600091825260209091206002909102015460058054600160a060020a039092169163c1786ab291339185908110612ae857fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515612b4f57600080fd5b6102c65a03f11515612b6057600080fd5b505050604051805190501515612b7557600080fd5b600101612a9d565b87600160a060020a031633600160a060020a03167f283faba4b8dcfe263728666be500623fdf5ae89ac78e40952fe2493f918ed62c898989604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a3600154600160a060020a031663b756d5a28989898960006040516020015260405160e060020a63ffffffff8716028152600160a060020a0394851660048201529284166024840152921660448201526064810191909152608401602060405180830381600087803b1515612c5457600080fd5b6102c65a03f11515612c6557600080fd5b50505060405180519350505060005b600554811015612d54576005805482908110612c8c57fe5b600091825260209091206002909102015460058054600160a060020a0390921691638043154d91339185908110612cbf57fe5b9060005260206000209060020201600101548560006040516020015260405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515612d2657600080fd5b6102c65a03f11515612d3757600080fd5b505050604051805190501515612d4c57600080fd5b600101612c74565b505095945050505050565b604080519081016040526000808252602082015290565b815481835581811511612da257600202816002028360005260206000209182019101612da29190612da7565b505050565b612de391905b80821115612ddf57805473ffffffffffffffffffffffffffffffffffffffff1916815560006001820155600201612dad565b5090565b905600a165627a7a72305820645d61722e519e71a0e8c56d47a7117ab6cec4dd9955e1bab84bbc45dd31b5670029",
  "sourceMap": "462:15395:7:-;;;3106:281;;;;;;;;;;;;;;;;;;;;;;3177:6;:16;;-1:-1:-1;;;;;;3177:16:7;-1:-1:-1;;;;;3177:16:7;;;;;;;;;;;;;-1:-1:-1;3217:6:7;;-1:-1:-1;3217:18:7;-1:-1:-1;3217:20:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3203:11;:34;;-1:-1:-1;;;;;;3203:34:7;-1:-1:-1;;;;;3203:34:7;;;;;;-1:-1:-1;3266:6:7;;;-1:-1:-1;3266:23:7;-1:-1:-1;3266:25:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3247:16;:44;;-1:-1:-1;;;;;;3247:44:7;-1:-1:-1;;;;;3247:44:7;;;;;;;;;;-1:-1:-1;3323:57:7;;;;;;;;;;3351:1;3323:57;;;3367:11;3323:57;;;;;;;;-1:-1:-1;;;;;3309:10:7;3301:19;;;;;;;3323:57;3301:79;;;;;;;;;;;;;;;;;-1:-1:-1;;3301:79:7;;;;;;;;;-1:-1:-1;;462:15395:7;;;;;;",
  "deployedSourceMap": "462:15395:7:-;;;;;;;;-1:-1:-1;;;462:15395:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3455:8;;;6976:601;;;;;;;;;;-1:-1:-1;;;;;6976:601:7;;;;;;;;;;;;;;;;;;;;;;;;;;;8131:138;;;;;;;;;;-1:-1:-1;;;;;8131:138:7;;;;;;;;;;;;;;;;;;;;;;;;;1494:28;;;;;;;;;;;;;;;-1:-1:-1;;;;;1494:28:7;;;;;;;;;;;;;;;10974:673;;;;;;;;;;-1:-1:-1;;;;;10974:673:7;;;;;;;;;;9806:938;;;;;;;;;;-1:-1:-1;;;;;9806:938:7;;;;;;;;;;1302:20;;;;;;;;;;;;11987:262;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11987:262:7;;-1:-1:-1;;;11987:262:7;;-1:-1:-1;;;;;11987:262:7;;-1:-1:-1;11987:262:7;;-1:-1:-1;;11987:262:7;12443:267;;;;;;;;;;;;-1:-1:-1;;;;;12443:267:7;;;;;;;;;;5222:285;;;;;;;;;;;;-1:-1:-1;;;;;5222:285:7;;;;;;;;;;14623:418;;;;;;;;;;-1:-1:-1;;;;;14623:418:7;;;;;;;;;;;;;;;;;;1756:75;;;;;;;;;;;;-1:-1:-1;;;;;1756:75:7;;;;;;;;;;;;;;;;;;;;;;;;;;1625:43;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1625:43:7;;;;;;;;;;;;;;;;;;;;;7689:270;;;;;;;;;;;;-1:-1:-1;;;;;7689:270:7;;;4732:301;;;;;;;;;;;;-1:-1:-1;;;;;4732:301:7;;;;;;;;;;8445:119;;;;;;;;;;;;-1:-1:-1;;;;;8445:119:7;;;1361:34;;;;;;;;;;;;8275:139;;;;;;;;;;-1:-1:-1;;;;;8275:139:7;;;;;;;;;;;;;-1:-1:-1;;;;;;8275:139:7;;;;;;;;;;;;;;;7965:160;;;;;;;;;;-1:-1:-1;;;;;7965:160:7;;;;;;;;;;12994:359;;;;;;;;;;-1:-1:-1;;;;;12994:359:7;;;;;;;;;;;;;;;;;;15422:433;;;;;;;;;;-1:-1:-1;;;;;15422:433:7;;;;;;;;;;;;;;;;;;1256:39;;;;;;;;;;;;-1:-1:-1;;;;;1256:39:7;;;;;;;;;-1:-1:-1;;;;;;1256:39:7;;;;;;;;;;;;;;;;1328:27;;;;;;;;;;;;8999:618;;;;;;;;;;-1:-1:-1;;;;;8999:618:7;;;;;;;;;;;;;5784:1043;;;;;;;;;;-1:-1:-1;;;;;5784:1043:7;;;;;;;;-1:-1:-1;;;;;;5784:1043:7;;;;;;;;;8570:180;;;;;;;;;;-1:-1:-1;;;;;8570:180:7;;;;;;;;;;13843:404;;;;;;;;;;-1:-1:-1;;;;;13843:404:7;;;;;;;;;;;;;;;;;;;;;;;6976:601;-1:-1:-1;;;;;3681:10:7;3673:19;7126:4;3673:19;;;;;;;;;;-1:-1:-1;3673:31:7;;-1:-1:-1;;;3673:31:7;3718:9;3673:41;;;:54;3665:63;;;;;;4016:518;4073:10;4093:207;4114:17;:24;4108:30;;4093:207;;;4197:17;:24;;4215:5;;4197:24;;;;;;;;;;;;;;;;;;;:34;4250:17;:24;;-1:-1:-1;;;;;4197:34:7;;;;4170:67;;4238:10;;4268:5;;4250:24;;;;;;;;;;;;;;;;:31;;;4283:4;4170:118;;;;;;;;;;;-1:-1:-1;;;4170:118:7;;;-1:-1:-1;;;;;4170:118:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4162:127;;;;;;;;4139:7;;4093:207;;;-1:-1:-1;;;;;7188:16:7;;7237:1;7188:16;;;;;;;;;;-1:-1:-1;7188:28:7;;-1:-1:-1;;;7188:28:7;;;:38;:51;7184:96;;;7262:5;7255:12;;;;7184:96;7410:10;-1:-1:-1;;;;;7402:19:7;;;7446:1;7402:19;;;;;;;;;;;-1:-1:-1;7402:31:7;;;;7371:16;;;;;;;:28;;-1:-1:-1;;;7402:31:7;;;7401:32;7371:28;;:63;7359:10;:76;:89;7351:98;;;;;;-1:-1:-1;;;;;7479:37:7;;;;7496:10;7479:37;;;;;;;;;;;-1:-1:-1;;;;;7533:16:7;;:7;:16;;;;;;;;;;7526:23;;;-1:-1:-1;7526:23:7;;;;;-1:-1:-1;;7526:23:7;;;-1:-1:-1;;4309:1:7;-1:-1:-1;4333:1:7;4320:208;4341:17;:24;4335:30;;4320:208;;;4424:17;:24;;4442:5;;4424:24;;;;;;;;;;;;;;;;;;;:34;4478:17;:24;;-1:-1:-1;;;;;4424:34:7;;;;4397:68;;4466:10;;4496:5;;4478:24;;;;;;;;;;;;;;;;:31;;;4511:4;4397:119;;;;;;;;;;;-1:-1:-1;;;4397:119:7;;;-1:-1:-1;;;;;4397:119:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4389:128;;;;;;;;4366:7;;4320:208;;;3738:1;;6976:601;;;;:::o;8131:138::-;-1:-1:-1;;;;;;8235:16:7;8209:7;8235:16;;;;;;;;;;:27;;8131:138::o;1494:28::-;;;-1:-1:-1;;;;;1494:28:7;;:::o;10974:673::-;-1:-1:-1;;;;;3945:10:7;3937:19;11072:4;3937:19;;;;;;;;;;-1:-1:-1;3937:31:7;;-1:-1:-1;;;3937:31:7;3982:9;3937:41;;;:54;3929:63;;;;;;11100:13;;-1:-1:-1;;;;;11100:13:7;:27;11092:36;;;;;;-1:-1:-1;;;;;11201:28:7;;;;11193:37;;;;;;11240:13;:30;;-1:-1:-1;;11240:30:7;-1:-1:-1;;;;;11240:30:7;;;;;;;;;;-1:-1:-1;11280:6:7;;:24;11240:30;11280:40;;;;;-1:-1:-1;;;11280:40:7;;;-1:-1:-1;;;;;11280:40:7;;;;;;;;;;-1:-1:-1;11280:40:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11334:11:7;;-1:-1:-1;;;;;11365:4:7;11334:36;;;-1:-1:-1;11334:11:7;:17;:11;:19;;;;;;;-1:-1:-1;;;11334:19:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11334:36:7;;;;;11330:112;;-1:-1:-1;11330:112:7;;11386:11;;-1:-1:-1;;;;;11386:11:7;:29;11416:14;11386:45;;;;;-1:-1:-1;;;11386:45:7;;;-1:-1:-1;;;;;11386:45:7;;;;;;;;;;-1:-1:-1;11386:45:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11330:112;11455:16;;-1:-1:-1;;;;;11491:4:7;11455:41;;;:16;:22;:16;:24;;;;;;;-1:-1:-1;;;11455:24:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11455:41:7;;;;;11451:122;;-1:-1:-1;11451:122:7;;11512:16;;-1:-1:-1;;;;;11512:16:7;:34;11547:14;11512:50;;;;;-1:-1:-1;;;11512:50:7;;;-1:-1:-1;;;;;11512:50:7;;;;;;;;;;-1:-1:-1;11512:50:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11451:122;11605:13;;11582:37;;11600:4;;-1:-1:-1;;;;;11605:13:7;11582:37;;-1:-1:-1;;;;;11582:37:7;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11636:4:7;10974:673;;;;:::o;9806:938::-;9921:4;9941:56;;:::i;:::-;10191:40;;:::i;:::-;-1:-1:-1;;;;;3817:10:7;3809:19;:7;:19;;;;;;;;;;-1:-1:-1;3809:31:7;;-1:-1:-1;;;3809:31:7;3854:9;3809:41;;;:54;3801:63;;;;;;-1:-1:-1;;;;;10000:44:7;;;;;;:25;:44;;;;;;;;;9941:103;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9941:103:7;10059:33;10055:661;;;10145:17;:24;-1:-1:-1;;10145:26:7;10112:30;;;;:59;10108:382;;;10234:17;10252:24;;-1:-1:-1;;10252:26:7;;;10234:45;;;;;;;;;;;;;;;;10191:88;;;;;;;;;;-1:-1:-1;;;;;10191:88:7;;;-1:-1:-1;10191:88:7;;;;;;;;;;;;;;-1:-1:-1;10191:88:7;;10297:17;;10315:30;;;10297:49;;;;;;;;;;;;;;;;;;:68;;;;;;-1:-1:-1;;10297:68:7;-1:-1:-1;;;;;10297:68:7;;;;;;;;;;;;;;;;-1:-1:-1;10445:30:7;;;;10383:25;:53;10409:16;:26;-1:-1:-1;;;;;10383:53:7;;;;;;;;;;;;-1:-1:-1;10383:53:7;-1:-1:-1;10383:59:7;:92;10108:382;10503:17;:26;;;;;-1:-1:-1;;10503:26:7;;;:::i;:::-;-1:-1:-1;;;;;;10550:44:7;;;;;;:25;:44;;;;;;;10543:51;;-1:-1:-1;;10543:51:7;;;-1:-1:-1;10543:51:7;;;;;10608:72;;10550:44;;10649:30;;;10608:72;;-1:-1:-1;;;;;10608:72:7;;;;;;;;;;;;;;;;;;;;;10701:4;10694:11;;;;10055:661;-1:-1:-1;10732:5:7;;9806:938;-1:-1:-1;;;;9806:938:7:o;1302:20::-;;;-1:-1:-1;;;;;1302:20:7;;:::o;11987:262::-;3550:10;-1:-1:-1;;;;;3542:19:7;12130:4;3542:19;;;;;;;;;;-1:-1:-1;3542:31:7;;-1:-1:-1;;;3542:31:7;;;:41;;:54;3534:63;;;;;;4016:518;4073:10;4093:207;4114:17;:24;4108:30;;4093:207;;;4197:17;:24;;4215:5;;4197:24;;;;;;;;;;;;;;;;;;;:34;4250:17;:24;;-1:-1:-1;;;;;4197:34:7;;;;4170:67;;4238:10;;4268:5;;4250:24;;;;;;;;;;;;;;;;:31;;;4283:4;4170:118;;;;;;;;;;;-1:-1:-1;;;4170:118:7;;;-1:-1:-1;;;;;4170:118:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4162:127;;;;;;;;4139:7;;4093:207;;;-1:-1:-1;;;;;12164:10:7;12150:34;;12176:7;12150:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;71:3;;;64:6;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;12201:6:7;;-1:-1:-1;;;;;12201:6:7;:20;12222:10;12234:7;12201:6;:41;;;;;;;-1:-1:-1;;;12201:41:7;;;;;;-1:-1:-1;;;;;12201:41:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;71:3;;;64:6;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1;;;4333:1:7;4320:208;4341:17;:24;4335:30;;4320:208;;;4424:17;:24;;4442:5;;4424:24;;;;;;;;;;;;;;;;;;;:34;4478:17;:24;;-1:-1:-1;;;;;4424:34:7;;;;4397:68;;4466:10;;4496:5;;4478:24;;;;;;;;;;;;;;;;:31;;;4511:4;4397:119;;;;;;;;;;;-1:-1:-1;;;4397:119:7;;;-1:-1:-1;;;;;4397:119:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4389:128;;;;;;;;4366:7;;4320:208;;12443:267;3550:10;-1:-1:-1;;;;;3542:19:7;12591:4;3542:19;;;;;;;;;;-1:-1:-1;3542:31:7;;-1:-1:-1;;;3542:31:7;;;:41;;:54;3534:63;;;;;;4016:518;4073:10;4093:207;4114:17;:24;4108:30;;4093:207;;;4197:17;:24;;4215:5;;4197:24;;;;;;;;;;;;;;;;;;;:34;4250:17;:24;;-1:-1:-1;;;;;4197:34:7;;;;4170:67;;4238:10;;4268:5;;4250:24;;;;;;;;;;;;;;;;:31;;;4283:4;4170:118;;;;;;;;;;;-1:-1:-1;;;4170:118:7;;;-1:-1:-1;;;;;4170:118:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4162:127;;;;;;;;4139:7;;4093:207;;;-1:-1:-1;;;;;12611:40:7;;;;12621:10;12611:40;;12633:12;12611:40;;;;;;;;;;;;;;12668:6;;-1:-1:-1;;;;;12668:6:7;:16;12685:12;12699:3;12668:6;:35;;;;;;;;;;-1:-1:-1;;;12668:35:7;;;;;;;;;;-1:-1:-1;;;;;12668:35:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4333:1:7;4320:208;4341:17;:24;4335:30;;4320:208;;;4424:17;:24;;4442:5;;4424:24;;;;;;;;;;;;;;;;;;;:34;4478:17;:24;;-1:-1:-1;;;;;4424:34:7;;;;4397:68;;4466:10;;4496:5;;4478:24;;;;;;;;;;;;;;;;:31;;;4511:4;4397:119;;;;;;;;;;;-1:-1:-1;;;4397:119:7;;;-1:-1:-1;;;;;4397:119:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4389:128;;;;;;;;4366:7;;4320:208;;;3607:1;;12443:267;;;;;:::o;5222:285::-;3550:10;-1:-1:-1;;;;;3542:19:7;5379:4;3542:19;;;;;;;;;;-1:-1:-1;3542:31:7;;-1:-1:-1;;;3542:31:7;;;:41;;:54;3534:63;;;;;;4016:518;4073:10;4093:207;4114:17;:24;4108:30;;4093:207;;;4197:17;:24;;4215:5;;4197:24;;;;;;;;;;;;;;;;;;;:34;4250:17;:24;;-1:-1:-1;;;;;4197:34:7;;;;4170:67;;4238:10;;4268:5;;4250:24;;;;;;;;;;;;;;;;:31;;;4283:4;4170:118;;;;;;;;;;;-1:-1:-1;;;4170:118:7;;;-1:-1:-1;;;;;4170:118:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4162:127;;;;;;;;4139:7;;4093:207;;;-1:-1:-1;;;;;5399:45:7;;;;5410:10;5399:45;;5436:7;5399:45;;;;;;;;;;;;;;5461:11;;-1:-1:-1;;;;;5461:11:7;:16;5478:12;5492:7;5461:11;:39;;;;;;;;;;-1:-1:-1;;;5461:39:7;;;-1:-1:-1;;;;;5461:39:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4333:1:7;4320:208;4341:17;:24;4335:30;;4320:208;;;4424:17;:24;;4442:5;;4424:24;;;;;;;;;;;;;;;;;;;:34;4478:17;:24;;-1:-1:-1;;;;;4424:34:7;;;;4397:68;;4466:10;;4496:5;;4478:24;;;;;;;;;;;;;;;;:31;;;4511:4;4397:119;;;;;;;;;;;-1:-1:-1;;;4397:119:7;;;-1:-1:-1;;;;;4397:119:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4389:128;;;;;;;;4366:7;;4320:208;;14623:418;3550:10;-1:-1:-1;;;;;3542:19:7;14845:4;3542:19;;;;;;;;;;-1:-1:-1;3542:31:7;;-1:-1:-1;;;3542:31:7;;;:41;;:54;3534:63;;;;;;4016:518;4073:10;4093:207;4114:17;:24;4108:30;;4093:207;;;4197:17;:24;;4215:5;;4197:24;;;;;;;;;;;;;;;;;;;:34;4250:17;:24;;-1:-1:-1;;;;;4197:34:7;;;;4170:67;;4238:10;;4268:5;;4250:24;;;;;;;;;;;;;;;;:31;;;4283:4;4170:118;;;;;;;;;;;-1:-1:-1;;;4170:118:7;;;-1:-1:-1;;;;;4170:118:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4162:127;;;;;;;;4139:7;;4093:207;;;-1:-1:-1;;;;;14865:77:7;;;;14895:10;14865:77;;14921:8;14930:11;14865:77;;-1:-1:-1;;;;;14865:77:7;;;;;;;;;;;;;;;;;;;;;14959:6;;-1:-1:-1;;;;;14959:6:7;:36;14996:14;15012:8;15022:11;14959:6;:75;;;;;;;;;;-1:-1:-1;;;14959:75:7;;;-1:-1:-1;;;;;14959:75:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4333:1:7;4320:208;4341:17;:24;4335:30;;4320:208;;;4424:17;:24;;4442:5;;4424:24;;;;;;;;;;;;;;;;;;;:34;4478:17;:24;;-1:-1:-1;;;;;4424:34:7;;;;4397:68;;4466:10;;4496:5;;4478:24;;;;;;;;;;;;;;;;:31;;;4511:4;4397:119;;;;;;;;;;;-1:-1:-1;;;4397:119:7;;;-1:-1:-1;;;;;4397:119:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4389:128;;;;;;;;4366:7;;4320:208;;;3607:1;;14623:418;;;;;;:::o;1756:75::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1625:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1625:43:7;;;;-1:-1:-1;1625:43:7;:::o;7689:270::-;7737:4;7757:41;7776:10;7795:1;7757:18;:41::i;:::-;:50;;7753:93;;-1:-1:-1;7830:5:7;7823:12;;7753:93;-1:-1:-1;;;;;7870:10:7;7862:19;:7;:19;;;;;;;;;;;7855:26;;;-1:-1:-1;7855:26:7;;;;;-1:-1:-1;;7855:26:7;;;7862:19;;7891:40;;;;;;;;;;-1:-1:-1;7948:4:7;7689:270;;;;:::o;4732:301::-;3550:10;-1:-1:-1;;;;;3542:19:7;4896:4;3542:19;;;;;;;;;;-1:-1:-1;3542:31:7;;-1:-1:-1;;;3542:31:7;;;:41;;:54;3534:63;;;;;;4016:518;4073:10;4093:207;4114:17;:24;4108:30;;4093:207;;;4197:17;:24;;4215:5;;4197:24;;;;;;;;;;;;;;;;;;;:34;4250:17;:24;;-1:-1:-1;;;;;4197:34:7;;;;4170:67;;4238:10;;4268:5;;4250:24;;;;;;;;;;;;;;;;:31;;;4283:4;4170:118;;;;;;;;;;;-1:-1:-1;;;4170:118:7;;;-1:-1:-1;;;;;4170:118:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4162:127;;;;;;;;4139:7;;4093:207;;;-1:-1:-1;;;;;4916:49:7;;;;4931:10;4916:49;;4957:7;4916:49;;;;;;;;;;;;;;4982:16;;-1:-1:-1;;;;;4982:16:7;:21;5004:12;5018:7;4982:16;:44;;;;;;;;;;-1:-1:-1;;;4982:44:7;;;-1:-1:-1;;;;;4982:44:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4333:1:7;4320:208;4341:17;:24;4335:30;;4320:208;;;4424:17;:24;;4442:5;;4424:24;;;;;;;;;;;;;;;;;;;:34;4478:17;:24;;-1:-1:-1;;;;;4424:34:7;;;;4397:68;;4466:10;;4496:5;;4478:24;;;;;;;;;;;;;;;;:31;;;4511:4;4397:119;;;;;;;;;;;-1:-1:-1;;;4397:119:7;;;-1:-1:-1;;;;;4397:119:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4389:128;;;;;;;;4366:7;;4320:208;;8445:119;-1:-1:-1;8533:17:7;:24;;8445:119::o;1361:34::-;;;-1:-1:-1;;;;;1361:34:7;;:::o;8275:139::-;-1:-1:-1;;;;;;8379:16:7;8354:6;8379:16;;;;;;;;;;-1:-1:-1;8379:28:7;;-1:-1:-1;;;8379:28:7;;8275:139::o;7965:160::-;-1:-1:-1;;;;;;8066:16:7;8042:4;8066:16;;;;;;;;;;-1:-1:-1;8066:28:7;;-1:-1:-1;;;8066:28:7;;;:38;:51;;;7965:160::o;12994:359::-;3550:10;-1:-1:-1;;;;;3542:19:7;13190:4;3542:19;;;;;;;;;;-1:-1:-1;3542:31:7;;-1:-1:-1;;;3542:31:7;;;:41;;:54;3534:63;;;;;;4016:518;4073:10;4093:207;4114:17;:24;4108:30;;4093:207;;;4197:17;:24;;4215:5;;4197:24;;;;;;;;;;;;;;;;;;;:34;4250:17;:24;;-1:-1:-1;;;;;4197:34:7;;;;4170:67;;4238:10;;4268:5;;4250:24;;;;;;;;;;;;;;;;:31;;;4283:4;4170:118;;;;;;;;;;;-1:-1:-1;;;4170:118:7;;;-1:-1:-1;;;;;4170:118:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4162:127;;;;;;;;4139:7;;4093:207;;;-1:-1:-1;;;;;13210:62:7;;;;;;;;13232:10;13210:62;;13265:6;13210:62;;;;;;;;;;;;;;13289:6;;-1:-1:-1;;;;;13289:6:7;:28;13318:14;13334:3;13339:6;13289;:57;;;;;;;;;;-1:-1:-1;;;13289:57:7;;;-1:-1:-1;;;;;13289:57:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4333:1:7;4320:208;4341:17;:24;4335:30;;4320:208;;;4424:17;:24;;4442:5;;4424:24;;;;;;;;;;;;;;;;;;;:34;4478:17;:24;;-1:-1:-1;;;;;4424:34:7;;;;4397:68;;4466:10;;4496:5;;4478:24;;;;;;;;;;;;;;;;:31;;;4511:4;4397:119;;;;;;;;;;;-1:-1:-1;;;4397:119:7;;;-1:-1:-1;;;;;4397:119:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4389:128;;;;;;;;4366:7;;4320:208;;15422:433;3550:10;-1:-1:-1;;;;;3542:19:7;15649:4;3542:19;;;;;;;;;;-1:-1:-1;3542:31:7;;-1:-1:-1;;;3542:31:7;;;:41;;:54;3534:63;;;;;;4016:518;4073:10;4093:207;4114:17;:24;4108:30;;4093:207;;;4197:17;:24;;4215:5;;4197:24;;;;;;;;;;;;;;;;;;;:34;4250:17;:24;;-1:-1:-1;;;;;4197:34:7;;;;4170:67;;4238:10;;4268:5;;4250:24;;;;;;;;;;;;;;;;:31;;;4283:4;4170:118;;;;;;;;;;;-1:-1:-1;;;4170:118:7;;;-1:-1:-1;;;;;4170:118:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4162:127;;;;;;;;4139:7;;4093:207;;;-1:-1:-1;;;;;15669:82:7;;;;15699:10;15669:82;;15725:8;15734:16;15669:82;;-1:-1:-1;;;;;15669:82:7;;;;;;;;;;;;;;;;;;;;;15768:6;;-1:-1:-1;;;;;15768:6:7;:36;15805:14;15821:8;15831:16;15768:6;:80;;;;;;;;;;-1:-1:-1;;;15768:80:7;;;-1:-1:-1;;;;;15768:80:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4333:1:7;4320:208;4341:17;:24;4335:30;;4320:208;;;4424:17;:24;;4442:5;;4424:24;;;;;;;;;;;;;;;;;;;:34;4478:17;:24;;-1:-1:-1;;;;;4424:34:7;;;;4397:68;;4466:10;;4496:5;;4478:24;;;;;;;;;;;;;;;;:31;;;4511:4;4397:119;;;;;;;;;;;-1:-1:-1;;;4397:119:7;;;-1:-1:-1;;;;;4397:119:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4389:128;;;;;;;;4366:7;;4320:208;;1256:39;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1256:39:7;;:::o;1328:27::-;;;-1:-1:-1;;;;;1328:27:7;;:::o;8999:618::-;-1:-1:-1;;;;;3817:10:7;3809:19;9127:4;3809:19;;;;;;;;;;-1:-1:-1;3809:31:7;;-1:-1:-1;;;3809:31:7;3854:9;3809:41;;;:54;3801:63;;;;;;-1:-1:-1;;;;;9152:44:7;;;;;;:25;:44;;;;;:53;;;9151:54;9147:386;;;9221:17;:67;;;;;;:17;:67;;:::i;:::-;;;;;;;;;;;;9244:43;;;;;;;;-1:-1:-1;;;;;9244:43:7;;;;;;;;;;;;-1:-1:-1;9244:43:7;9221:67;;;-1:-1:-1;;9221:67:7;-1:-1:-1;;;;;9221:67:7;;;;;;;;;;;;;;;;-1:-1:-1;9349:57:7;;-1:-1:-1;9349:57:7;;;;;;;;;9374:4;9349:57;;9379:17;:24;-1:-1:-1;;9379:26:7;9349:57;;;;;;;;-1:-1:-1;;;;;9302:44:7;;-1:-1:-1;9302:44:7;;;:25;:44;;;;9349:57;9302:104;;;-1:-1:-1;;9302:104:7;;;;;;;;;;;;;;;;-1:-1:-1;9147:386:7;;;-1:-1:-1;;;;;9454:44:7;;;;;;:25;:44;;;;;-1:-1:-1;9454:50:7;;9436:17;:69;;9515:7;;9454:50;9436:69;;;;;;;;;;;;;;:76;:69;;;;;:76;:86;9147:386;9542:47;9562:17;9581:7;9542:47;;-1:-1:-1;;;;;9542:47:7;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9606:4:7;8999:618;;;;;:::o;5784:1043::-;5971:4;5992:20;;:::i;:::-;-1:-1:-1;;;;;3681:10:7;3673:19;:7;:19;;;;;;;;;;-1:-1:-1;3673:31:7;;-1:-1:-1;;;3673:31:7;3718:9;3673:41;;;:54;3665:63;;;;;;4016:518;4073:10;4093:207;4114:17;:24;4108:30;;4093:207;;;4197:17;:24;;4215:5;;4197:24;;;;;;;;;;;;;;;;;;;:34;4250:17;:24;;-1:-1:-1;;;;;4197:34:7;;;;4170:67;;4238:10;;4268:5;;4250:24;;;;;;;;;;;;;;;;:31;;;4283:4;4170:118;;;;;;;;;;;-1:-1:-1;;;4170:118:7;;;-1:-1:-1;;;;;4170:118:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4162:127;;;;;;;;4139:7;;4093:207;;;-1:-1:-1;;;;;6015:16:7;;:7;:16;;;;;;;;;;;;;;5992:39;;;;;;;;;;;;;;;;;-1:-1:-1;;;5992:39:7;;;-1:-1:-1;;;;;;5992:39:7;;;;;;;;6385:10;-1:-1:-1;;;;;6377:19:7;-1:-1:-1;6377:19:7;;;;;;;;;;:31;;;;5992:39;;-1:-1:-1;;;6377:31:7;;6376:32;;6355:18;6342:31;;6330:79;:10;:79;:92;6322:101;;;;;;6567:10;-1:-1:-1;;;;;6559:19:7;6603:1;6559:19;;;;;;;;;;-1:-1:-1;6559:31:7;;-1:-1:-1;;;6559:31:7;6558:32;;6538:18;;;:53;6526:10;:66;:79;6518:88;;;;;;-1:-1:-1;;;;;6650:16:7;;;:7;:16;;;;;;;;;;;;:41;;;-1:-1:-1;6701:28:7;:53;;-1:-1:-1;;6701:53:7;-1:-1:-1;;;6732:22:7;;;6701:53;;;;6650:16;;6779:10;6764:35;;;;;;;;;;;;6816:4;6809:11;;-1:-1:-1;4333:1:7;4320:208;4341:17;:24;4335:30;;4320:208;;;4424:17;:24;;4442:5;;4424:24;;;;;;;;;;;;;;;;;;;:34;4478:17;:24;;-1:-1:-1;;;;;4424:34:7;;;;4397:68;;4466:10;;4496:5;;4478:24;;;;;;;;;;;;;;;;:31;;;4511:4;4397:119;;;;;;;;;;;-1:-1:-1;;;4397:119:7;;;-1:-1:-1;;;;;4397:119:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4389:128;;;;;;;;4366:7;;4320:208;;;3738:1;;5784:1043;;;;;;;:::o;8570:180::-;-1:-1:-1;;;;;;8690:44:7;8667:4;8690:44;;;:25;:44;;;;;:53;;;;8570:180::o;13843:404::-;3550:10;-1:-1:-1;;;;;3542:19:7;14062:4;3542:19;;;;;;;;;;-1:-1:-1;3542:31:7;;-1:-1:-1;;;3542:31:7;;;:41;;:54;3534:63;;;;;;4016:518;4073:10;4093:207;4114:17;:24;4108:30;;4093:207;;;4197:17;:24;;4215:5;;4197:24;;;;;;;;;;;;;;;;;;;:34;4250:17;:24;;-1:-1:-1;;;;;4197:34:7;;;;4170:67;;4238:10;;4268:5;;4250:24;;;;;;;;;;;;;;;;:31;;;4283:4;4170:118;;;;;;;;;;;-1:-1:-1;;;4170:118:7;;;-1:-1:-1;;;;;4170:118:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4162:127;;;;;;;;4139:7;;4093:207;;;-1:-1:-1;;;;;14082:73:7;;;;14108:10;14082:73;;14136:5;14143:3;14148:6;14082:73;;-1:-1:-1;;;;;14082:73:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14172:6;;-1:-1:-1;;;;;14172:6:7;:32;14205:14;14221:5;14228:3;14233:6;14172;:68;;;;;;;;;;-1:-1:-1;;;14172:68:7;;;-1:-1:-1;;;;;14172:68:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4333:1:7;4320:208;4341:17;:24;4335:30;;4320:208;;;4424:17;:24;;4442:5;;4424:24;;;;;;;;;;;;;;;;;;;:34;4478:17;:24;;-1:-1:-1;;;;;4424:34:7;;;;4397:68;;4466:10;;4496:5;;4478:24;;;;;;;;;;;;;;;;:31;;;4511:4;4397:119;;;;;;;;;;;-1:-1:-1;;;4397:119:7;;;-1:-1:-1;;;;;4397:119:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4389:128;;;;;;;;4366:7;;4320:208;;;3607:1;;13843:404;;;;;;;:::o;462:15395::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;462:15395:7;;;-1:-1:-1;;462:15395:7;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.4.18;\n\nimport \"./Avatar.sol\";\nimport \"./Reputation.sol\";\nimport \"./DAOToken.sol\";\nimport \"../globalConstraints/GlobalConstraintInterface.sol\";\nimport \"./ControllerInterface.sol\";\n\n\n/**\n * @title Controller contract\n * @dev A controller controls the organizations tokens,reputation and avatar.\n * It is subject to a set of schemes and constraints that determine its behavior.\n * Each scheme has it own parameters and operation permissions.\n */\ncontract Controller is ControllerInterface {\n\n    struct Scheme {\n        bytes32 paramsHash;  // a hash \"configuration\" of the scheme\n        bytes4  permissions; // A bitwise flags of permissions,\n                             // All 0: Not registered,\n                             // 1st bit: Flag if the scheme is registered,\n                             // 2nd bit: Scheme can register other schemes\n                             // 3rd bit: Scheme can add/remove global constraints\n                             // 4th bit: Scheme can upgrade the controller\n    }\n\n    struct GlobalConstraint {\n        address gcAddress;\n        bytes32 params;\n    }\n\n    struct GlobalConstraintRegister {\n        bool register; //is register\n        uint index;    //index at globalConstraints\n    }\n\n    mapping(address=>Scheme) public schemes;\n\n    Avatar public avatar;\n    DAOToken public nativeToken;\n    Reputation public nativeReputation;\n  // newController will point to the new controller after the present controller is upgraded\n    address public newController;\n  // globalConstraints that determine pre- and post-conditions for all actions on the controller\n    GlobalConstraint[] public globalConstraints;\n  // globalConstraintsRegister indicate is a globalConstraints is register or not\n    mapping(address=>GlobalConstraintRegister) public globalConstraintsRegister;\n\n    event MintReputation (address indexed _sender, address indexed _beneficiary, int256 _amount);\n    event MintTokens (address indexed _sender, address indexed _beneficiary, uint256 _amount);\n    event RegisterScheme (address indexed _sender, address indexed _scheme);\n    event UnregisterScheme (address indexed _sender, address indexed _scheme);\n    event GenericAction (address indexed _sender, bytes32[] _params);\n    event SendEther (address indexed _sender, uint _amountInWei, address indexed _to);\n    event ExternalTokenTransfer (address indexed _sender, address indexed _externalToken, address indexed _to, uint _value);\n    event ExternalTokenTransferFrom (address indexed _sender, address indexed _externalToken, address _from, address _to, uint _value);\n    event ExternalTokenIncreaseApproval (address indexed _sender, StandardToken indexed _externalToken, address _spender, uint _value);\n    event ExternalTokenDecreaseApproval (address indexed _sender, StandardToken indexed _externalToken, address _spender, uint _value);\n    event AddGlobalConstraint(address _globalConstraint, bytes32 _params);\n    event RemoveGlobalConstraint(address _globalConstraint ,uint256 _index);\n    event UpgradeController(address _oldController,address _newController);\n\n    function Controller(\n        Avatar _avatar\n    ) public\n    {\n        avatar = _avatar;\n        nativeToken = avatar.nativeToken();\n        nativeReputation = avatar.nativeReputation();\n        schemes[msg.sender] = Scheme({paramsHash: bytes32(0),permissions: bytes4(0xF)});\n    }\n\n  // Do not allow mistaken calls:\n    function() public {\n        revert();\n    }\n\n  // Modifiers:\n    modifier onlyRegisteredScheme() {\n        require(schemes[msg.sender].permissions&bytes4(1) == bytes4(1));\n        _;\n    }\n\n    modifier onlyRegisteringSchemes() {\n        require(schemes[msg.sender].permissions&bytes4(2) == bytes4(2));\n        _;\n    }\n\n    modifier onlyGlobalConstraintsScheme() {\n        require(schemes[msg.sender].permissions&bytes4(4) == bytes4(4));\n        _;\n    }\n\n    modifier onlyUpgradingScheme() {\n        require(schemes[msg.sender].permissions&bytes4(8) == bytes4(8));\n        _;\n    }\n\n    modifier onlySubjectToConstraint(bytes32 func) {\n        uint index;\n        for (index = 0;index<globalConstraints.length;index++) {\n            require((GlobalConstraintInterface(globalConstraints[index].gcAddress)).pre(msg.sender, globalConstraints[index].params, func));\n        }\n        _;\n        for (index = 0;index<globalConstraints.length;index++) {\n            require((GlobalConstraintInterface(globalConstraints[index].gcAddress)).post(msg.sender, globalConstraints[index].params, func));\n        }\n    }\n\n    /**\n     * @dev mint reputation .\n     * @param  _amount amount of reputation to mint\n     * @param _beneficiary beneficiary address\n     * @return bool which represents a success\n     */\n    function mintReputation(int256 _amount, address _beneficiary,address)\n    public\n    onlyRegisteredScheme\n    onlySubjectToConstraint(\"mintReputation\")\n    returns(bool)\n    {\n        MintReputation(msg.sender, _beneficiary, _amount);\n        return nativeReputation.mint(_beneficiary, _amount);\n    }\n\n    /**\n     * @dev mint tokens .\n     * @param  _amount amount of token to mint\n     * @param _beneficiary beneficiary address\n     * @return bool which represents a success\n     */\n    function mintTokens(uint256 _amount, address _beneficiary,address)\n    public\n    onlyRegisteredScheme\n    onlySubjectToConstraint(\"mintTokens\")\n    returns(bool)\n    {\n        MintTokens(msg.sender, _beneficiary, _amount);\n        return nativeToken.mint(_beneficiary, _amount);\n    }\n\n  /**\n   * @dev register a scheme\n   * @param _scheme the address of the scheme\n   * @param _paramsHash a hashed configuration of the usage of the scheme\n   * @param _permissions the permissions the new scheme will have\n   * @return bool which represents a success\n   */\n    function registerScheme(address _scheme, bytes32 _paramsHash, bytes4 _permissions,address)\n    public\n    onlyRegisteringSchemes\n    onlySubjectToConstraint(\"registerScheme\")\n    returns(bool)\n    {\n\n        Scheme memory scheme = schemes[_scheme];\n\n    // Check scheme has at least the permissions it is changing, and at least the current permissions:\n    // Implementation is a bit messy. One must recall logic-circuits ^^\n\n    // produces non-zero if sender does not have all of the perms that are changing between old and new\n        require(bytes4(15)&(_permissions^scheme.permissions)&(~schemes[msg.sender].permissions) == bytes4(0));\n\n    // produces non-zero if sender does not have all of the perms in the old scheme\n        require(bytes4(15)&(scheme.permissions&(~schemes[msg.sender].permissions)) == bytes4(0));\n\n    // Add or change the scheme:\n        schemes[_scheme].paramsHash = _paramsHash;\n        schemes[_scheme].permissions = _permissions|bytes4(1);\n        RegisterScheme(msg.sender, _scheme);\n        return true;\n    }\n\n    /**\n     * @dev unregister a scheme\n     * @param _scheme the address of the scheme\n     * @return bool which represents a success\n     */\n    function unregisterScheme( address _scheme,address)\n    public\n    onlyRegisteringSchemes\n    onlySubjectToConstraint(\"unregisterScheme\")\n    returns(bool)\n    {\n    //check if the scheme is register\n        if (schemes[_scheme].permissions&bytes4(1) == bytes4(0)) {\n            return false;\n          }\n    // Check the unregistering scheme has enough permissions:\n        require(bytes4(15)&(schemes[_scheme].permissions&(~schemes[msg.sender].permissions)) == bytes4(0));\n\n    // Unregister:\n        UnregisterScheme(msg.sender, _scheme);\n        delete schemes[_scheme];\n        return true;\n    }\n\n    /**\n     * @dev unregister the caller's scheme\n     * @return bool which represents a success\n     */\n    function unregisterSelf(address) public returns(bool) {\n        if (isSchemeRegistered(msg.sender,address(0)) == false) {\n            return false;\n        }\n        delete schemes[msg.sender];\n        UnregisterScheme(msg.sender, msg.sender);\n        return true;\n    }\n\n    function isSchemeRegistered(address _scheme,address) public constant returns(bool) {\n        return (schemes[_scheme].permissions&bytes4(1) != bytes4(0));\n    }\n\n    function getSchemeParameters(address _scheme,address) public constant returns(bytes32) {\n        return schemes[_scheme].paramsHash;\n    }\n\n    function getSchemePermissions(address _scheme,address) public constant returns(bytes4) {\n        return schemes[_scheme].permissions;\n    }\n\n  // Global constraints:\n    function globalConstraintsCount(address) public constant returns(uint) {\n        return globalConstraints.length;\n    }\n\n    function isGlobalConstraintRegistered(address _globalConstraint,address) public constant returns(bool) {\n        return globalConstraintsRegister[_globalConstraint].register;\n    }\n\n    /**\n     * @dev add or update Global Constraint\n     * @param _globalConstraint the address of the global constraint to be added.\n     * @param _params the constraint parameters hash.\n     * @return bool which represents a success\n     */\n    function addGlobalConstraint(address _globalConstraint, bytes32 _params,address)\n    public onlyGlobalConstraintsScheme returns(bool)\n    {\n        if (!globalConstraintsRegister[_globalConstraint].register) {\n            globalConstraints.push(GlobalConstraint(_globalConstraint,_params));\n            globalConstraintsRegister[_globalConstraint] = GlobalConstraintRegister(true,globalConstraints.length-1);\n        }else {\n            globalConstraints[globalConstraintsRegister[_globalConstraint].index].params = _params;\n        }\n        AddGlobalConstraint(_globalConstraint, _params);\n        return true;\n    }\n\n    /**\n     * @dev remove Global Constraint\n     * @param _globalConstraint the address of the global constraint to be remove.\n     * @return bool which represents a success\n     */\n    function removeGlobalConstraint (address _globalConstraint,address)\n    public onlyGlobalConstraintsScheme returns(bool)\n    {\n        GlobalConstraintRegister memory globalConstraintRegister = globalConstraintsRegister[_globalConstraint];\n\n        if (globalConstraintRegister.register) {\n            if (globalConstraintRegister.index < globalConstraints.length-1) {\n                GlobalConstraint memory globalConstraint = globalConstraints[globalConstraints.length-1];\n                globalConstraints[globalConstraintRegister.index] = globalConstraint;\n                globalConstraintsRegister[globalConstraint.gcAddress].index = globalConstraintRegister.index;\n            }\n            globalConstraints.length--;\n            delete globalConstraintsRegister[_globalConstraint];\n            RemoveGlobalConstraint(_globalConstraint,globalConstraintRegister.index);\n            return true;\n        }\n        return false;\n    }\n\n  /**\n    * @dev upgrade the Controller\n    *      The function will trigger an event 'UpgradeController'.\n    * @param  _newController the address of the new controller.\n    * @return bool which represents a success\n    */\n    function upgradeController(address _newController,address)\n    public onlyUpgradingScheme returns(bool)\n    {\n        require(newController == address(0));   // so the upgrade could be done once for a contract.\n        require(_newController != address(0));\n        newController = _newController;\n        avatar.transferOwnership(_newController);\n        if (nativeToken.owner() == address(this)) {\n            nativeToken.transferOwnership(_newController);\n        }\n        if (nativeReputation.owner() == address(this)) {\n            nativeReputation.transferOwnership(_newController);\n        }\n        UpgradeController(this,newController);\n        return true;\n    }\n\n    /**\n    * @dev do a generic delegate call to the contract which called us.\n    * This function use delegatecall and might expose the organization to security\n    * risk. Use this function only if you really knows what you are doing.\n    * @param _params the params for the call.\n    * @return bool which represents success\n    */\n    function genericAction(bytes32[] _params,address)\n    public\n    onlyRegisteredScheme\n    onlySubjectToConstraint(\"genericAction\")\n    returns(bool)\n    {\n        GenericAction(msg.sender, _params);\n        return avatar.genericAction(msg.sender, _params);\n    }\n\n  /**\n   * @dev send some ether\n   * @param _amountInWei the amount of ether (in Wei) to send\n   * @param _to address of the beneficiary\n   * @return bool which represents a success\n   */\n    function sendEther(uint _amountInWei, address _to,address)\n    public\n    onlyRegisteredScheme\n    onlySubjectToConstraint(\"sendEther\")\n    returns(bool)\n    {\n        SendEther(msg.sender, _amountInWei, _to);\n        return avatar.sendEther(_amountInWei, _to);\n    }\n\n    /**\n    * @dev send some amount of arbitrary ERC20 Tokens\n    * @param _externalToken the address of the Token Contract\n    * @param _to address of the beneficiary\n    * @param _value the amount of ether (in Wei) to send\n    * @return bool which represents a success\n    */\n    function externalTokenTransfer(StandardToken _externalToken, address _to, uint _value,address)\n    public\n    onlyRegisteredScheme\n    onlySubjectToConstraint(\"externalTokenTransfer\")\n    returns(bool)\n    {\n        ExternalTokenTransfer(msg.sender, _externalToken, _to, _value);\n        return avatar.externalTokenTransfer(_externalToken, _to, _value);\n    }\n\n    /**\n    * @dev transfer token \"from\" address \"to\" address\n    *      One must to approve the amount of tokens which can be spend from the\n    *      \"from\" account.This can be done using externalTokenApprove.\n    * @param _externalToken the address of the Token Contract\n    * @param _from address of the account to send from\n    * @param _to address of the beneficiary\n    * @param _value the amount of ether (in Wei) to send\n    * @return bool which represents a success\n    */\n    function externalTokenTransferFrom(StandardToken _externalToken, address _from, address _to, uint _value,address)\n    public\n    onlyRegisteredScheme\n    onlySubjectToConstraint(\"externalTokenTransferFrom\")\n    returns(bool)\n    {\n        ExternalTokenTransferFrom(msg.sender, _externalToken, _from, _to, _value);\n        return avatar.externalTokenTransferFrom(_externalToken, _from, _to, _value);\n    }\n\n    /**\n    * @dev increase approval for the spender address to spend a specified amount of tokens\n    *      on behalf of msg.sender.\n    * @param _externalToken the address of the Token Contract\n    * @param _spender address\n    * @param _addedValue the amount of ether (in Wei) which the approval is referring to.\n    * @return bool which represents a success\n    */\n    function externalTokenIncreaseApproval(StandardToken _externalToken, address _spender, uint _addedValue,address)\n    public\n    onlyRegisteredScheme\n    onlySubjectToConstraint(\"externalTokenIncreaseApproval\")\n    returns(bool)\n    {\n        ExternalTokenIncreaseApproval(msg.sender,_externalToken,_spender,_addedValue);\n        return avatar.externalTokenIncreaseApproval(_externalToken, _spender, _addedValue);\n    }\n\n    /**\n    * @dev decrease approval for the spender address to spend a specified amount of tokens\n    *      on behalf of msg.sender.\n    * @param _externalToken the address of the Token Contract\n    * @param _spender address\n    * @param _subtractedValue the amount of ether (in Wei) which the approval is referring to.\n    * @return bool which represents a success\n    */\n    function externalTokenDecreaseApproval(StandardToken _externalToken, address _spender, uint _subtractedValue,address)\n    public\n    onlyRegisteredScheme\n    onlySubjectToConstraint(\"externalTokenDecreaseApproval\")\n    returns(bool)\n    {\n        ExternalTokenDecreaseApproval(msg.sender,_externalToken,_spender,_subtractedValue);\n        return avatar.externalTokenDecreaseApproval(_externalToken, _spender, _subtractedValue);\n    }\n}\n",
  "sourcePath": "/Users/oren/daostack/daostack2/daostack/contracts/controller/Controller.sol",
  "ast": {
    "attributes": {
      "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/controller/Controller.sol",
      "exportedSymbols": {
        "Controller": [
          4967
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.4",
            ".18"
          ]
        },
        "id": 3875,
        "name": "PragmaDirective",
        "src": "0:24:7"
      },
      {
        "attributes": {
          "SourceUnit": 3874,
          "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/controller/Avatar.sol",
          "file": "./Avatar.sol",
          "scope": 4968,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3876,
        "name": "ImportDirective",
        "src": "26:22:7"
      },
      {
        "attributes": {
          "SourceUnit": 5353,
          "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/controller/Reputation.sol",
          "file": "./Reputation.sol",
          "scope": 4968,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3877,
        "name": "ImportDirective",
        "src": "49:26:7"
      },
      {
        "attributes": {
          "SourceUnit": 5208,
          "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/controller/DAOToken.sol",
          "file": "./DAOToken.sol",
          "scope": 4968,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3878,
        "name": "ImportDirective",
        "src": "76:24:7"
      },
      {
        "attributes": {
          "SourceUnit": 6699,
          "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/globalConstraints/GlobalConstraintInterface.sol",
          "file": "../globalConstraints/GlobalConstraintInterface.sol",
          "scope": 4968,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3879,
        "name": "ImportDirective",
        "src": "101:60:7"
      },
      {
        "attributes": {
          "SourceUnit": 5173,
          "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/controller/ControllerInterface.sol",
          "file": "./ControllerInterface.sol",
          "scope": 4968,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3880,
        "name": "ImportDirective",
        "src": "162:35:7"
      },
      {
        "attributes": {
          "contractDependencies": [
            5172
          ],
          "contractKind": "contract",
          "documentation": "@title Controller contract\n@dev A controller controls the organizations tokens,reputation and avatar.\nIt is subject to a set of schemes and constraints that determine its behavior.\nEach scheme has it own parameters and operation permissions.",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            4967,
            5172
          ],
          "name": "Controller",
          "scope": 4968
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "ControllerInterface",
                  "referencedDeclaration": 5172,
                  "type": "contract ControllerInterface"
                },
                "id": 3881,
                "name": "UserDefinedTypeName",
                "src": "485:19:7"
              }
            ],
            "id": 3882,
            "name": "InheritanceSpecifier",
            "src": "485:19:7"
          },
          {
            "attributes": {
              "canonicalName": "Controller.Scheme",
              "name": "Scheme",
              "scope": 4967,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "name": "paramsHash",
                  "scope": 3887,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bytes32",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes32",
                      "type": "bytes32"
                    },
                    "id": 3883,
                    "name": "ElementaryTypeName",
                    "src": "536:7:7"
                  }
                ],
                "id": 3884,
                "name": "VariableDeclaration",
                "src": "536:18:7"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "permissions",
                  "scope": 3887,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bytes4",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes4",
                      "type": "bytes4"
                    },
                    "id": 3885,
                    "name": "ElementaryTypeName",
                    "src": "605:6:7"
                  }
                ],
                "id": 3886,
                "name": "VariableDeclaration",
                "src": "605:19:7"
              }
            ],
            "id": 3887,
            "name": "StructDefinition",
            "src": "512:516:7"
          },
          {
            "attributes": {
              "canonicalName": "Controller.GlobalConstraint",
              "name": "GlobalConstraint",
              "scope": 4967,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "name": "gcAddress",
                  "scope": 3892,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "address",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 3888,
                    "name": "ElementaryTypeName",
                    "src": "1068:7:7"
                  }
                ],
                "id": 3889,
                "name": "VariableDeclaration",
                "src": "1068:17:7"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "params",
                  "scope": 3892,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bytes32",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes32",
                      "type": "bytes32"
                    },
                    "id": 3890,
                    "name": "ElementaryTypeName",
                    "src": "1095:7:7"
                  }
                ],
                "id": 3891,
                "name": "VariableDeclaration",
                "src": "1095:14:7"
              }
            ],
            "id": 3892,
            "name": "StructDefinition",
            "src": "1034:82:7"
          },
          {
            "attributes": {
              "canonicalName": "Controller.GlobalConstraintRegister",
              "name": "GlobalConstraintRegister",
              "scope": 4967,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "name": "register",
                  "scope": 3897,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bool",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bool",
                      "type": "bool"
                    },
                    "id": 3893,
                    "name": "ElementaryTypeName",
                    "src": "1164:4:7"
                  }
                ],
                "id": 3894,
                "name": "VariableDeclaration",
                "src": "1164:13:7"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "index",
                  "scope": 3897,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 3895,
                    "name": "ElementaryTypeName",
                    "src": "1201:4:7"
                  }
                ],
                "id": 3896,
                "name": "VariableDeclaration",
                "src": "1201:10:7"
              }
            ],
            "id": 3897,
            "name": "StructDefinition",
            "src": "1122:128:7"
          },
          {
            "attributes": {
              "constant": false,
              "name": "schemes",
              "scope": 4967,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(address => struct Controller.Scheme storage ref)",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(address => struct Controller.Scheme storage ref)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 3898,
                    "name": "ElementaryTypeName",
                    "src": "1264:7:7"
                  },
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "Scheme",
                      "referencedDeclaration": 3887,
                      "type": "struct Controller.Scheme storage pointer"
                    },
                    "id": 3899,
                    "name": "UserDefinedTypeName",
                    "src": "1273:6:7"
                  }
                ],
                "id": 3900,
                "name": "Mapping",
                "src": "1256:24:7"
              }
            ],
            "id": 3901,
            "name": "VariableDeclaration",
            "src": "1256:39:7"
          },
          {
            "attributes": {
              "constant": false,
              "name": "avatar",
              "scope": 4967,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract Avatar",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "Avatar",
                  "referencedDeclaration": 3873,
                  "type": "contract Avatar"
                },
                "id": 3902,
                "name": "UserDefinedTypeName",
                "src": "1302:6:7"
              }
            ],
            "id": 3903,
            "name": "VariableDeclaration",
            "src": "1302:20:7"
          },
          {
            "attributes": {
              "constant": false,
              "name": "nativeToken",
              "scope": 4967,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract DAOToken",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "DAOToken",
                  "referencedDeclaration": 5207,
                  "type": "contract DAOToken"
                },
                "id": 3904,
                "name": "UserDefinedTypeName",
                "src": "1328:8:7"
              }
            ],
            "id": 3905,
            "name": "VariableDeclaration",
            "src": "1328:27:7"
          },
          {
            "attributes": {
              "constant": false,
              "name": "nativeReputation",
              "scope": 4967,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract Reputation",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "Reputation",
                  "referencedDeclaration": 5352,
                  "type": "contract Reputation"
                },
                "id": 3906,
                "name": "UserDefinedTypeName",
                "src": "1361:10:7"
              }
            ],
            "id": 3907,
            "name": "VariableDeclaration",
            "src": "1361:34:7"
          },
          {
            "attributes": {
              "constant": false,
              "name": "newController",
              "scope": 4967,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "address",
                  "type": "address"
                },
                "id": 3908,
                "name": "ElementaryTypeName",
                "src": "1494:7:7"
              }
            ],
            "id": 3909,
            "name": "VariableDeclaration",
            "src": "1494:28:7"
          },
          {
            "attributes": {
              "constant": false,
              "name": "globalConstraints",
              "scope": 4967,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "struct Controller.GlobalConstraint storage ref[] storage ref",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "length": null,
                  "type": "struct Controller.GlobalConstraint storage ref[] storage pointer"
                },
                "children": [
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "GlobalConstraint",
                      "referencedDeclaration": 3892,
                      "type": "struct Controller.GlobalConstraint storage pointer"
                    },
                    "id": 3910,
                    "name": "UserDefinedTypeName",
                    "src": "1625:16:7"
                  }
                ],
                "id": 3911,
                "name": "ArrayTypeName",
                "src": "1625:18:7"
              }
            ],
            "id": 3912,
            "name": "VariableDeclaration",
            "src": "1625:43:7"
          },
          {
            "attributes": {
              "constant": false,
              "name": "globalConstraintsRegister",
              "scope": 4967,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(address => struct Controller.GlobalConstraintRegister storage ref)",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(address => struct Controller.GlobalConstraintRegister storage ref)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 3913,
                    "name": "ElementaryTypeName",
                    "src": "1764:7:7"
                  },
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "GlobalConstraintRegister",
                      "referencedDeclaration": 3897,
                      "type": "struct Controller.GlobalConstraintRegister storage pointer"
                    },
                    "id": 3914,
                    "name": "UserDefinedTypeName",
                    "src": "1773:24:7"
                  }
                ],
                "id": 3915,
                "name": "Mapping",
                "src": "1756:42:7"
              }
            ],
            "id": 3916,
            "name": "VariableDeclaration",
            "src": "1756:75:7"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "MintReputation"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_sender",
                      "scope": 3924,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3917,
                        "name": "ElementaryTypeName",
                        "src": "1860:7:7"
                      }
                    ],
                    "id": 3918,
                    "name": "VariableDeclaration",
                    "src": "1860:23:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_beneficiary",
                      "scope": 3924,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3919,
                        "name": "ElementaryTypeName",
                        "src": "1885:7:7"
                      }
                    ],
                    "id": 3920,
                    "name": "VariableDeclaration",
                    "src": "1885:28:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_amount",
                      "scope": 3924,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int256",
                          "type": "int256"
                        },
                        "id": 3921,
                        "name": "ElementaryTypeName",
                        "src": "1915:6:7"
                      }
                    ],
                    "id": 3922,
                    "name": "VariableDeclaration",
                    "src": "1915:14:7"
                  }
                ],
                "id": 3923,
                "name": "ParameterList",
                "src": "1859:71:7"
              }
            ],
            "id": 3924,
            "name": "EventDefinition",
            "src": "1838:93:7"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "MintTokens"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_sender",
                      "scope": 3932,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3925,
                        "name": "ElementaryTypeName",
                        "src": "1954:7:7"
                      }
                    ],
                    "id": 3926,
                    "name": "VariableDeclaration",
                    "src": "1954:23:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_beneficiary",
                      "scope": 3932,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3927,
                        "name": "ElementaryTypeName",
                        "src": "1979:7:7"
                      }
                    ],
                    "id": 3928,
                    "name": "VariableDeclaration",
                    "src": "1979:28:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_amount",
                      "scope": 3932,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3929,
                        "name": "ElementaryTypeName",
                        "src": "2009:7:7"
                      }
                    ],
                    "id": 3930,
                    "name": "VariableDeclaration",
                    "src": "2009:15:7"
                  }
                ],
                "id": 3931,
                "name": "ParameterList",
                "src": "1953:72:7"
              }
            ],
            "id": 3932,
            "name": "EventDefinition",
            "src": "1936:90:7"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "RegisterScheme"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_sender",
                      "scope": 3938,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3933,
                        "name": "ElementaryTypeName",
                        "src": "2053:7:7"
                      }
                    ],
                    "id": 3934,
                    "name": "VariableDeclaration",
                    "src": "2053:23:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_scheme",
                      "scope": 3938,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3935,
                        "name": "ElementaryTypeName",
                        "src": "2078:7:7"
                      }
                    ],
                    "id": 3936,
                    "name": "VariableDeclaration",
                    "src": "2078:23:7"
                  }
                ],
                "id": 3937,
                "name": "ParameterList",
                "src": "2052:50:7"
              }
            ],
            "id": 3938,
            "name": "EventDefinition",
            "src": "2031:72:7"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "UnregisterScheme"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_sender",
                      "scope": 3944,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3939,
                        "name": "ElementaryTypeName",
                        "src": "2132:7:7"
                      }
                    ],
                    "id": 3940,
                    "name": "VariableDeclaration",
                    "src": "2132:23:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_scheme",
                      "scope": 3944,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3941,
                        "name": "ElementaryTypeName",
                        "src": "2157:7:7"
                      }
                    ],
                    "id": 3942,
                    "name": "VariableDeclaration",
                    "src": "2157:23:7"
                  }
                ],
                "id": 3943,
                "name": "ParameterList",
                "src": "2131:50:7"
              }
            ],
            "id": 3944,
            "name": "EventDefinition",
            "src": "2108:74:7"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "GenericAction"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_sender",
                      "scope": 3951,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3945,
                        "name": "ElementaryTypeName",
                        "src": "2208:7:7"
                      }
                    ],
                    "id": 3946,
                    "name": "VariableDeclaration",
                    "src": "2208:23:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_params",
                      "scope": 3951,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32[] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "bytes32[] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 3947,
                            "name": "ElementaryTypeName",
                            "src": "2233:7:7"
                          }
                        ],
                        "id": 3948,
                        "name": "ArrayTypeName",
                        "src": "2233:9:7"
                      }
                    ],
                    "id": 3949,
                    "name": "VariableDeclaration",
                    "src": "2233:17:7"
                  }
                ],
                "id": 3950,
                "name": "ParameterList",
                "src": "2207:44:7"
              }
            ],
            "id": 3951,
            "name": "EventDefinition",
            "src": "2187:65:7"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "SendEther"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_sender",
                      "scope": 3959,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3952,
                        "name": "ElementaryTypeName",
                        "src": "2274:7:7"
                      }
                    ],
                    "id": 3953,
                    "name": "VariableDeclaration",
                    "src": "2274:23:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_amountInWei",
                      "scope": 3959,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3954,
                        "name": "ElementaryTypeName",
                        "src": "2299:4:7"
                      }
                    ],
                    "id": 3955,
                    "name": "VariableDeclaration",
                    "src": "2299:17:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_to",
                      "scope": 3959,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3956,
                        "name": "ElementaryTypeName",
                        "src": "2318:7:7"
                      }
                    ],
                    "id": 3957,
                    "name": "VariableDeclaration",
                    "src": "2318:19:7"
                  }
                ],
                "id": 3958,
                "name": "ParameterList",
                "src": "2273:65:7"
              }
            ],
            "id": 3959,
            "name": "EventDefinition",
            "src": "2257:82:7"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "ExternalTokenTransfer"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_sender",
                      "scope": 3969,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3960,
                        "name": "ElementaryTypeName",
                        "src": "2373:7:7"
                      }
                    ],
                    "id": 3961,
                    "name": "VariableDeclaration",
                    "src": "2373:23:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_externalToken",
                      "scope": 3969,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3962,
                        "name": "ElementaryTypeName",
                        "src": "2398:7:7"
                      }
                    ],
                    "id": 3963,
                    "name": "VariableDeclaration",
                    "src": "2398:30:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_to",
                      "scope": 3969,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3964,
                        "name": "ElementaryTypeName",
                        "src": "2430:7:7"
                      }
                    ],
                    "id": 3965,
                    "name": "VariableDeclaration",
                    "src": "2430:19:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_value",
                      "scope": 3969,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3966,
                        "name": "ElementaryTypeName",
                        "src": "2451:4:7"
                      }
                    ],
                    "id": 3967,
                    "name": "VariableDeclaration",
                    "src": "2451:11:7"
                  }
                ],
                "id": 3968,
                "name": "ParameterList",
                "src": "2372:91:7"
              }
            ],
            "id": 3969,
            "name": "EventDefinition",
            "src": "2344:120:7"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "ExternalTokenTransferFrom"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_sender",
                      "scope": 3981,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3970,
                        "name": "ElementaryTypeName",
                        "src": "2502:7:7"
                      }
                    ],
                    "id": 3971,
                    "name": "VariableDeclaration",
                    "src": "2502:23:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_externalToken",
                      "scope": 3981,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3972,
                        "name": "ElementaryTypeName",
                        "src": "2527:7:7"
                      }
                    ],
                    "id": 3973,
                    "name": "VariableDeclaration",
                    "src": "2527:30:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_from",
                      "scope": 3981,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3974,
                        "name": "ElementaryTypeName",
                        "src": "2559:7:7"
                      }
                    ],
                    "id": 3975,
                    "name": "VariableDeclaration",
                    "src": "2559:13:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_to",
                      "scope": 3981,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3976,
                        "name": "ElementaryTypeName",
                        "src": "2574:7:7"
                      }
                    ],
                    "id": 3977,
                    "name": "VariableDeclaration",
                    "src": "2574:11:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_value",
                      "scope": 3981,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3978,
                        "name": "ElementaryTypeName",
                        "src": "2587:4:7"
                      }
                    ],
                    "id": 3979,
                    "name": "VariableDeclaration",
                    "src": "2587:11:7"
                  }
                ],
                "id": 3980,
                "name": "ParameterList",
                "src": "2501:98:7"
              }
            ],
            "id": 3981,
            "name": "EventDefinition",
            "src": "2469:131:7"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "ExternalTokenIncreaseApproval"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_sender",
                      "scope": 3991,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3982,
                        "name": "ElementaryTypeName",
                        "src": "2642:7:7"
                      }
                    ],
                    "id": 3983,
                    "name": "VariableDeclaration",
                    "src": "2642:23:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_externalToken",
                      "scope": 3991,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 11999,
                          "type": "contract StandardToken"
                        },
                        "id": 3984,
                        "name": "UserDefinedTypeName",
                        "src": "2667:13:7"
                      }
                    ],
                    "id": 3985,
                    "name": "VariableDeclaration",
                    "src": "2667:36:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_spender",
                      "scope": 3991,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3986,
                        "name": "ElementaryTypeName",
                        "src": "2705:7:7"
                      }
                    ],
                    "id": 3987,
                    "name": "VariableDeclaration",
                    "src": "2705:16:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_value",
                      "scope": 3991,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3988,
                        "name": "ElementaryTypeName",
                        "src": "2723:4:7"
                      }
                    ],
                    "id": 3989,
                    "name": "VariableDeclaration",
                    "src": "2723:11:7"
                  }
                ],
                "id": 3990,
                "name": "ParameterList",
                "src": "2641:94:7"
              }
            ],
            "id": 3991,
            "name": "EventDefinition",
            "src": "2605:131:7"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "ExternalTokenDecreaseApproval"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_sender",
                      "scope": 4001,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3992,
                        "name": "ElementaryTypeName",
                        "src": "2778:7:7"
                      }
                    ],
                    "id": 3993,
                    "name": "VariableDeclaration",
                    "src": "2778:23:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_externalToken",
                      "scope": 4001,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 11999,
                          "type": "contract StandardToken"
                        },
                        "id": 3994,
                        "name": "UserDefinedTypeName",
                        "src": "2803:13:7"
                      }
                    ],
                    "id": 3995,
                    "name": "VariableDeclaration",
                    "src": "2803:36:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_spender",
                      "scope": 4001,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3996,
                        "name": "ElementaryTypeName",
                        "src": "2841:7:7"
                      }
                    ],
                    "id": 3997,
                    "name": "VariableDeclaration",
                    "src": "2841:16:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_value",
                      "scope": 4001,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3998,
                        "name": "ElementaryTypeName",
                        "src": "2859:4:7"
                      }
                    ],
                    "id": 3999,
                    "name": "VariableDeclaration",
                    "src": "2859:11:7"
                  }
                ],
                "id": 4000,
                "name": "ParameterList",
                "src": "2777:94:7"
              }
            ],
            "id": 4001,
            "name": "EventDefinition",
            "src": "2741:131:7"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "AddGlobalConstraint"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_globalConstraint",
                      "scope": 4007,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4002,
                        "name": "ElementaryTypeName",
                        "src": "2903:7:7"
                      }
                    ],
                    "id": 4003,
                    "name": "VariableDeclaration",
                    "src": "2903:25:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_params",
                      "scope": 4007,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 4004,
                        "name": "ElementaryTypeName",
                        "src": "2930:7:7"
                      }
                    ],
                    "id": 4005,
                    "name": "VariableDeclaration",
                    "src": "2930:15:7"
                  }
                ],
                "id": 4006,
                "name": "ParameterList",
                "src": "2902:44:7"
              }
            ],
            "id": 4007,
            "name": "EventDefinition",
            "src": "2877:70:7"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "RemoveGlobalConstraint"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_globalConstraint",
                      "scope": 4013,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4008,
                        "name": "ElementaryTypeName",
                        "src": "2981:7:7"
                      }
                    ],
                    "id": 4009,
                    "name": "VariableDeclaration",
                    "src": "2981:25:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_index",
                      "scope": 4013,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 4010,
                        "name": "ElementaryTypeName",
                        "src": "3008:7:7"
                      }
                    ],
                    "id": 4011,
                    "name": "VariableDeclaration",
                    "src": "3008:14:7"
                  }
                ],
                "id": 4012,
                "name": "ParameterList",
                "src": "2980:43:7"
              }
            ],
            "id": 4013,
            "name": "EventDefinition",
            "src": "2952:72:7"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "UpgradeController"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_oldController",
                      "scope": 4019,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4014,
                        "name": "ElementaryTypeName",
                        "src": "3053:7:7"
                      }
                    ],
                    "id": 4015,
                    "name": "VariableDeclaration",
                    "src": "3053:22:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_newController",
                      "scope": 4019,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4016,
                        "name": "ElementaryTypeName",
                        "src": "3076:7:7"
                      }
                    ],
                    "id": 4017,
                    "name": "VariableDeclaration",
                    "src": "3076:22:7"
                  }
                ],
                "id": 4018,
                "name": "ParameterList",
                "src": "3052:47:7"
              }
            ],
            "id": 4019,
            "name": "EventDefinition",
            "src": "3029:71:7"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": true,
              "modifiers": [
                null
              ],
              "name": "Controller",
              "payable": false,
              "scope": 4967,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4055,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract Avatar",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Avatar",
                          "referencedDeclaration": 3873,
                          "type": "contract Avatar"
                        },
                        "id": 4020,
                        "name": "UserDefinedTypeName",
                        "src": "3135:6:7"
                      }
                    ],
                    "id": 4021,
                    "name": "VariableDeclaration",
                    "src": "3135:14:7"
                  }
                ],
                "id": 4022,
                "name": "ParameterList",
                "src": "3125:30:7"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 4023,
                "name": "ParameterList",
                "src": "3167:0:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract Avatar"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3903,
                              "type": "contract Avatar",
                              "value": "avatar"
                            },
                            "id": 4024,
                            "name": "Identifier",
                            "src": "3177:6:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4021,
                              "type": "contract Avatar",
                              "value": "_avatar"
                            },
                            "id": 4025,
                            "name": "Identifier",
                            "src": "3186:7:7"
                          }
                        ],
                        "id": 4026,
                        "name": "Assignment",
                        "src": "3177:16:7"
                      }
                    ],
                    "id": 4027,
                    "name": "ExpressionStatement",
                    "src": "3177:16:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract DAOToken"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3905,
                              "type": "contract DAOToken",
                              "value": "nativeToken"
                            },
                            "id": 4028,
                            "name": "Identifier",
                            "src": "3203:11:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract DAOToken",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "nativeToken",
                                  "referencedDeclaration": 3604,
                                  "type": "function () view external returns (contract DAOToken)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3903,
                                      "type": "contract Avatar",
                                      "value": "avatar"
                                    },
                                    "id": 4029,
                                    "name": "Identifier",
                                    "src": "3217:6:7"
                                  }
                                ],
                                "id": 4030,
                                "name": "MemberAccess",
                                "src": "3217:18:7"
                              }
                            ],
                            "id": 4031,
                            "name": "FunctionCall",
                            "src": "3217:20:7"
                          }
                        ],
                        "id": 4032,
                        "name": "Assignment",
                        "src": "3203:34:7"
                      }
                    ],
                    "id": 4033,
                    "name": "ExpressionStatement",
                    "src": "3203:34:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract Reputation"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3907,
                              "type": "contract Reputation",
                              "value": "nativeReputation"
                            },
                            "id": 4034,
                            "name": "Identifier",
                            "src": "3247:16:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract Reputation",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "nativeReputation",
                                  "referencedDeclaration": 3606,
                                  "type": "function () view external returns (contract Reputation)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3903,
                                      "type": "contract Avatar",
                                      "value": "avatar"
                                    },
                                    "id": 4035,
                                    "name": "Identifier",
                                    "src": "3266:6:7"
                                  }
                                ],
                                "id": 4036,
                                "name": "MemberAccess",
                                "src": "3266:23:7"
                              }
                            ],
                            "id": 4037,
                            "name": "FunctionCall",
                            "src": "3266:25:7"
                          }
                        ],
                        "id": 4038,
                        "name": "Assignment",
                        "src": "3247:44:7"
                      }
                    ],
                    "id": 4039,
                    "name": "ExpressionStatement",
                    "src": "3247:44:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "struct Controller.Scheme storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "struct Controller.Scheme storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3901,
                                  "type": "mapping(address => struct Controller.Scheme storage ref)",
                                  "value": "schemes"
                                },
                                "id": 4040,
                                "name": "Identifier",
                                "src": "3301:7:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12011,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 4041,
                                    "name": "Identifier",
                                    "src": "3309:3:7"
                                  }
                                ],
                                "id": 4042,
                                "name": "MemberAccess",
                                "src": "3309:10:7"
                              }
                            ],
                            "id": 4043,
                            "name": "IndexAccess",
                            "src": "3301:19:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": true,
                              "lValueRequested": false,
                              "names": [
                                "paramsHash",
                                "permissions"
                              ],
                              "type": "struct Controller.Scheme memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3887,
                                  "type": "type(struct Controller.Scheme storage pointer)",
                                  "value": "Scheme"
                                },
                                "id": 4044,
                                "name": "Identifier",
                                "src": "3323:6:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes32",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(bytes32)",
                                      "value": "bytes32"
                                    },
                                    "id": 4045,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "3343:7:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 4046,
                                    "name": "Literal",
                                    "src": "3351:1:7"
                                  }
                                ],
                                "id": 4047,
                                "name": "FunctionCall",
                                "src": "3343:10:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes4",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_15_by_1",
                                          "typeString": "int_const 15"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(bytes4)",
                                      "value": "bytes4"
                                    },
                                    "id": 4048,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "3367:6:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "307846",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 15",
                                      "value": "0xF"
                                    },
                                    "id": 4049,
                                    "name": "Literal",
                                    "src": "3374:3:7"
                                  }
                                ],
                                "id": 4050,
                                "name": "FunctionCall",
                                "src": "3367:11:7"
                              }
                            ],
                            "id": 4051,
                            "name": "FunctionCall",
                            "src": "3323:57:7"
                          }
                        ],
                        "id": 4052,
                        "name": "Assignment",
                        "src": "3301:79:7"
                      }
                    ],
                    "id": 4053,
                    "name": "ExpressionStatement",
                    "src": "3301:79:7"
                  }
                ],
                "id": 4054,
                "name": "Block",
                "src": "3167:220:7"
              }
            ],
            "id": 4055,
            "name": "FunctionDefinition",
            "src": "3106:281:7"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "",
              "payable": false,
              "scope": 4967,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 4056,
                "name": "ParameterList",
                "src": "3435:2:7"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 4057,
                "name": "ParameterList",
                "src": "3445:0:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12015,
                              "type": "function () pure",
                              "value": "revert"
                            },
                            "id": 4058,
                            "name": "Identifier",
                            "src": "3455:6:7"
                          }
                        ],
                        "id": 4059,
                        "name": "FunctionCall",
                        "src": "3455:8:7"
                      }
                    ],
                    "id": 4060,
                    "name": "ExpressionStatement",
                    "src": "3455:8:7"
                  }
                ],
                "id": 4061,
                "name": "Block",
                "src": "3445:25:7"
              }
            ],
            "id": 4062,
            "name": "FunctionDefinition",
            "src": "3427:43:7"
          },
          {
            "attributes": {
              "name": "onlyRegisteredScheme",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 4063,
                "name": "ParameterList",
                "src": "3521:2:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 4064,
                            "name": "Identifier",
                            "src": "3534:7:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "&",
                                  "type": "bytes4"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "permissions",
                                      "referencedDeclaration": 3886,
                                      "type": "bytes4"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct Controller.Scheme storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3901,
                                              "type": "mapping(address => struct Controller.Scheme storage ref)",
                                              "value": "schemes"
                                            },
                                            "id": 4065,
                                            "name": "Identifier",
                                            "src": "3542:7:7"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "sender",
                                              "referencedDeclaration": null,
                                              "type": "address"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 12011,
                                                  "type": "msg",
                                                  "value": "msg"
                                                },
                                                "id": 4066,
                                                "name": "Identifier",
                                                "src": "3550:3:7"
                                              }
                                            ],
                                            "id": 4067,
                                            "name": "MemberAccess",
                                            "src": "3550:10:7"
                                          }
                                        ],
                                        "id": 4068,
                                        "name": "IndexAccess",
                                        "src": "3542:19:7"
                                      }
                                    ],
                                    "id": 4069,
                                    "name": "MemberAccess",
                                    "src": "3542:31:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes4",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(bytes4)",
                                          "value": "bytes4"
                                        },
                                        "id": 4070,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "3574:6:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 4071,
                                        "name": "Literal",
                                        "src": "3581:1:7"
                                      }
                                    ],
                                    "id": 4072,
                                    "name": "FunctionCall",
                                    "src": "3574:9:7"
                                  }
                                ],
                                "id": 4073,
                                "name": "BinaryOperation",
                                "src": "3542:41:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes4",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(bytes4)",
                                      "value": "bytes4"
                                    },
                                    "id": 4074,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "3587:6:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 4075,
                                    "name": "Literal",
                                    "src": "3594:1:7"
                                  }
                                ],
                                "id": 4076,
                                "name": "FunctionCall",
                                "src": "3587:9:7"
                              }
                            ],
                            "id": 4077,
                            "name": "BinaryOperation",
                            "src": "3542:54:7"
                          }
                        ],
                        "id": 4078,
                        "name": "FunctionCall",
                        "src": "3534:63:7"
                      }
                    ],
                    "id": 4079,
                    "name": "ExpressionStatement",
                    "src": "3534:63:7"
                  },
                  {
                    "id": 4080,
                    "name": "PlaceholderStatement",
                    "src": "3607:1:7"
                  }
                ],
                "id": 4081,
                "name": "Block",
                "src": "3524:91:7"
              }
            ],
            "id": 4082,
            "name": "ModifierDefinition",
            "src": "3492:123:7"
          },
          {
            "attributes": {
              "name": "onlyRegisteringSchemes",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 4083,
                "name": "ParameterList",
                "src": "3652:2:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 4084,
                            "name": "Identifier",
                            "src": "3665:7:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "&",
                                  "type": "bytes4"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "permissions",
                                      "referencedDeclaration": 3886,
                                      "type": "bytes4"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct Controller.Scheme storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3901,
                                              "type": "mapping(address => struct Controller.Scheme storage ref)",
                                              "value": "schemes"
                                            },
                                            "id": 4085,
                                            "name": "Identifier",
                                            "src": "3673:7:7"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "sender",
                                              "referencedDeclaration": null,
                                              "type": "address"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 12011,
                                                  "type": "msg",
                                                  "value": "msg"
                                                },
                                                "id": 4086,
                                                "name": "Identifier",
                                                "src": "3681:3:7"
                                              }
                                            ],
                                            "id": 4087,
                                            "name": "MemberAccess",
                                            "src": "3681:10:7"
                                          }
                                        ],
                                        "id": 4088,
                                        "name": "IndexAccess",
                                        "src": "3673:19:7"
                                      }
                                    ],
                                    "id": 4089,
                                    "name": "MemberAccess",
                                    "src": "3673:31:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes4",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_2_by_1",
                                              "typeString": "int_const 2"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(bytes4)",
                                          "value": "bytes4"
                                        },
                                        "id": 4090,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "3705:6:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "32",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 2",
                                          "value": "2"
                                        },
                                        "id": 4091,
                                        "name": "Literal",
                                        "src": "3712:1:7"
                                      }
                                    ],
                                    "id": 4092,
                                    "name": "FunctionCall",
                                    "src": "3705:9:7"
                                  }
                                ],
                                "id": 4093,
                                "name": "BinaryOperation",
                                "src": "3673:41:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes4",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(bytes4)",
                                      "value": "bytes4"
                                    },
                                    "id": 4094,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "3718:6:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "32",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 2",
                                      "value": "2"
                                    },
                                    "id": 4095,
                                    "name": "Literal",
                                    "src": "3725:1:7"
                                  }
                                ],
                                "id": 4096,
                                "name": "FunctionCall",
                                "src": "3718:9:7"
                              }
                            ],
                            "id": 4097,
                            "name": "BinaryOperation",
                            "src": "3673:54:7"
                          }
                        ],
                        "id": 4098,
                        "name": "FunctionCall",
                        "src": "3665:63:7"
                      }
                    ],
                    "id": 4099,
                    "name": "ExpressionStatement",
                    "src": "3665:63:7"
                  },
                  {
                    "id": 4100,
                    "name": "PlaceholderStatement",
                    "src": "3738:1:7"
                  }
                ],
                "id": 4101,
                "name": "Block",
                "src": "3655:91:7"
              }
            ],
            "id": 4102,
            "name": "ModifierDefinition",
            "src": "3621:125:7"
          },
          {
            "attributes": {
              "name": "onlyGlobalConstraintsScheme",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 4103,
                "name": "ParameterList",
                "src": "3788:2:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 4104,
                            "name": "Identifier",
                            "src": "3801:7:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "&",
                                  "type": "bytes4"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "permissions",
                                      "referencedDeclaration": 3886,
                                      "type": "bytes4"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct Controller.Scheme storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3901,
                                              "type": "mapping(address => struct Controller.Scheme storage ref)",
                                              "value": "schemes"
                                            },
                                            "id": 4105,
                                            "name": "Identifier",
                                            "src": "3809:7:7"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "sender",
                                              "referencedDeclaration": null,
                                              "type": "address"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 12011,
                                                  "type": "msg",
                                                  "value": "msg"
                                                },
                                                "id": 4106,
                                                "name": "Identifier",
                                                "src": "3817:3:7"
                                              }
                                            ],
                                            "id": 4107,
                                            "name": "MemberAccess",
                                            "src": "3817:10:7"
                                          }
                                        ],
                                        "id": 4108,
                                        "name": "IndexAccess",
                                        "src": "3809:19:7"
                                      }
                                    ],
                                    "id": 4109,
                                    "name": "MemberAccess",
                                    "src": "3809:31:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes4",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_4_by_1",
                                              "typeString": "int_const 4"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(bytes4)",
                                          "value": "bytes4"
                                        },
                                        "id": 4110,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "3841:6:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "34",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 4",
                                          "value": "4"
                                        },
                                        "id": 4111,
                                        "name": "Literal",
                                        "src": "3848:1:7"
                                      }
                                    ],
                                    "id": 4112,
                                    "name": "FunctionCall",
                                    "src": "3841:9:7"
                                  }
                                ],
                                "id": 4113,
                                "name": "BinaryOperation",
                                "src": "3809:41:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes4",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_4_by_1",
                                          "typeString": "int_const 4"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(bytes4)",
                                      "value": "bytes4"
                                    },
                                    "id": 4114,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "3854:6:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "34",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 4",
                                      "value": "4"
                                    },
                                    "id": 4115,
                                    "name": "Literal",
                                    "src": "3861:1:7"
                                  }
                                ],
                                "id": 4116,
                                "name": "FunctionCall",
                                "src": "3854:9:7"
                              }
                            ],
                            "id": 4117,
                            "name": "BinaryOperation",
                            "src": "3809:54:7"
                          }
                        ],
                        "id": 4118,
                        "name": "FunctionCall",
                        "src": "3801:63:7"
                      }
                    ],
                    "id": 4119,
                    "name": "ExpressionStatement",
                    "src": "3801:63:7"
                  },
                  {
                    "id": 4120,
                    "name": "PlaceholderStatement",
                    "src": "3874:1:7"
                  }
                ],
                "id": 4121,
                "name": "Block",
                "src": "3791:91:7"
              }
            ],
            "id": 4122,
            "name": "ModifierDefinition",
            "src": "3752:130:7"
          },
          {
            "attributes": {
              "name": "onlyUpgradingScheme",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 4123,
                "name": "ParameterList",
                "src": "3916:2:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 4124,
                            "name": "Identifier",
                            "src": "3929:7:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "&",
                                  "type": "bytes4"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "permissions",
                                      "referencedDeclaration": 3886,
                                      "type": "bytes4"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct Controller.Scheme storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3901,
                                              "type": "mapping(address => struct Controller.Scheme storage ref)",
                                              "value": "schemes"
                                            },
                                            "id": 4125,
                                            "name": "Identifier",
                                            "src": "3937:7:7"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "sender",
                                              "referencedDeclaration": null,
                                              "type": "address"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 12011,
                                                  "type": "msg",
                                                  "value": "msg"
                                                },
                                                "id": 4126,
                                                "name": "Identifier",
                                                "src": "3945:3:7"
                                              }
                                            ],
                                            "id": 4127,
                                            "name": "MemberAccess",
                                            "src": "3945:10:7"
                                          }
                                        ],
                                        "id": 4128,
                                        "name": "IndexAccess",
                                        "src": "3937:19:7"
                                      }
                                    ],
                                    "id": 4129,
                                    "name": "MemberAccess",
                                    "src": "3937:31:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes4",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_8_by_1",
                                              "typeString": "int_const 8"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(bytes4)",
                                          "value": "bytes4"
                                        },
                                        "id": 4130,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "3969:6:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "38",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 8",
                                          "value": "8"
                                        },
                                        "id": 4131,
                                        "name": "Literal",
                                        "src": "3976:1:7"
                                      }
                                    ],
                                    "id": 4132,
                                    "name": "FunctionCall",
                                    "src": "3969:9:7"
                                  }
                                ],
                                "id": 4133,
                                "name": "BinaryOperation",
                                "src": "3937:41:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes4",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_8_by_1",
                                          "typeString": "int_const 8"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(bytes4)",
                                      "value": "bytes4"
                                    },
                                    "id": 4134,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "3982:6:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "38",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 8",
                                      "value": "8"
                                    },
                                    "id": 4135,
                                    "name": "Literal",
                                    "src": "3989:1:7"
                                  }
                                ],
                                "id": 4136,
                                "name": "FunctionCall",
                                "src": "3982:9:7"
                              }
                            ],
                            "id": 4137,
                            "name": "BinaryOperation",
                            "src": "3937:54:7"
                          }
                        ],
                        "id": 4138,
                        "name": "FunctionCall",
                        "src": "3929:63:7"
                      }
                    ],
                    "id": 4139,
                    "name": "ExpressionStatement",
                    "src": "3929:63:7"
                  },
                  {
                    "id": 4140,
                    "name": "PlaceholderStatement",
                    "src": "4002:1:7"
                  }
                ],
                "id": 4141,
                "name": "Block",
                "src": "3919:91:7"
              }
            ],
            "id": 4142,
            "name": "ModifierDefinition",
            "src": "3888:122:7"
          },
          {
            "attributes": {
              "name": "onlySubjectToConstraint",
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "func",
                      "scope": 4215,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 4143,
                        "name": "ElementaryTypeName",
                        "src": "4049:7:7"
                      }
                    ],
                    "id": 4144,
                    "name": "VariableDeclaration",
                    "src": "4049:12:7"
                  }
                ],
                "id": 4145,
                "name": "ParameterList",
                "src": "4048:14:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        null
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "index",
                          "scope": 4215,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 4146,
                            "name": "ElementaryTypeName",
                            "src": "4073:4:7"
                          }
                        ],
                        "id": 4147,
                        "name": "VariableDeclaration",
                        "src": "4073:10:7"
                      }
                    ],
                    "id": 4148,
                    "name": "VariableDeclarationStatement",
                    "src": "4073:10:7"
                  },
                  {
                    "children": [
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4147,
                                  "type": "uint256",
                                  "value": "index"
                                },
                                "id": 4149,
                                "name": "Identifier",
                                "src": "4098:5:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 4150,
                                "name": "Literal",
                                "src": "4106:1:7"
                              }
                            ],
                            "id": 4151,
                            "name": "Assignment",
                            "src": "4098:9:7"
                          }
                        ],
                        "id": 4152,
                        "name": "ExpressionStatement",
                        "src": "4098:9:7"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4147,
                              "type": "uint256",
                              "value": "index"
                            },
                            "id": 4153,
                            "name": "Identifier",
                            "src": "4108:5:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3912,
                                  "type": "struct Controller.GlobalConstraint storage ref[] storage ref",
                                  "value": "globalConstraints"
                                },
                                "id": 4154,
                                "name": "Identifier",
                                "src": "4114:17:7"
                              }
                            ],
                            "id": 4155,
                            "name": "MemberAccess",
                            "src": "4114:24:7"
                          }
                        ],
                        "id": 4156,
                        "name": "BinaryOperation",
                        "src": "4108:30:7"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4147,
                                  "type": "uint256",
                                  "value": "index"
                                },
                                "id": 4157,
                                "name": "Identifier",
                                "src": "4139:5:7"
                              }
                            ],
                            "id": 4158,
                            "name": "UnaryOperation",
                            "src": "4139:7:7"
                          }
                        ],
                        "id": 4159,
                        "name": "ExpressionStatement",
                        "src": "4139:7:7"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12014,
                                      "type": "function (bool) pure",
                                      "value": "require"
                                    },
                                    "id": 4160,
                                    "name": "Identifier",
                                    "src": "4162:7:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bool",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "pre",
                                          "referencedDeclaration": 6686,
                                          "type": "function (address,bytes32,bytes32) external returns (bool)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "contract GlobalConstraintInterface"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "type": "contract GlobalConstraintInterface",
                                                  "type_conversion": true
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 6698,
                                                      "type": "type(contract GlobalConstraintInterface)",
                                                      "value": "GlobalConstraintInterface"
                                                    },
                                                    "id": 4161,
                                                    "name": "Identifier",
                                                    "src": "4171:25:7"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "gcAddress",
                                                      "referencedDeclaration": 3889,
                                                      "type": "address"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "type": "struct Controller.GlobalConstraint storage ref"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 3912,
                                                              "type": "struct Controller.GlobalConstraint storage ref[] storage ref",
                                                              "value": "globalConstraints"
                                                            },
                                                            "id": 4162,
                                                            "name": "Identifier",
                                                            "src": "4197:17:7"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 4147,
                                                              "type": "uint256",
                                                              "value": "index"
                                                            },
                                                            "id": 4163,
                                                            "name": "Identifier",
                                                            "src": "4215:5:7"
                                                          }
                                                        ],
                                                        "id": 4164,
                                                        "name": "IndexAccess",
                                                        "src": "4197:24:7"
                                                      }
                                                    ],
                                                    "id": 4165,
                                                    "name": "MemberAccess",
                                                    "src": "4197:34:7"
                                                  }
                                                ],
                                                "id": 4166,
                                                "name": "FunctionCall",
                                                "src": "4171:61:7"
                                              }
                                            ],
                                            "id": 4167,
                                            "name": "TupleExpression",
                                            "src": "4170:63:7"
                                          }
                                        ],
                                        "id": 4168,
                                        "name": "MemberAccess",
                                        "src": "4170:67:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "sender",
                                          "referencedDeclaration": null,
                                          "type": "address"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 12011,
                                              "type": "msg",
                                              "value": "msg"
                                            },
                                            "id": 4169,
                                            "name": "Identifier",
                                            "src": "4238:3:7"
                                          }
                                        ],
                                        "id": 4170,
                                        "name": "MemberAccess",
                                        "src": "4238:10:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "params",
                                          "referencedDeclaration": 3891,
                                          "type": "bytes32"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "struct Controller.GlobalConstraint storage ref"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3912,
                                                  "type": "struct Controller.GlobalConstraint storage ref[] storage ref",
                                                  "value": "globalConstraints"
                                                },
                                                "id": 4171,
                                                "name": "Identifier",
                                                "src": "4250:17:7"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 4147,
                                                  "type": "uint256",
                                                  "value": "index"
                                                },
                                                "id": 4172,
                                                "name": "Identifier",
                                                "src": "4268:5:7"
                                              }
                                            ],
                                            "id": 4173,
                                            "name": "IndexAccess",
                                            "src": "4250:24:7"
                                          }
                                        ],
                                        "id": 4174,
                                        "name": "MemberAccess",
                                        "src": "4250:31:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4144,
                                          "type": "bytes32",
                                          "value": "func"
                                        },
                                        "id": 4175,
                                        "name": "Identifier",
                                        "src": "4283:4:7"
                                      }
                                    ],
                                    "id": 4176,
                                    "name": "FunctionCall",
                                    "src": "4170:118:7"
                                  }
                                ],
                                "id": 4177,
                                "name": "FunctionCall",
                                "src": "4162:127:7"
                              }
                            ],
                            "id": 4178,
                            "name": "ExpressionStatement",
                            "src": "4162:127:7"
                          }
                        ],
                        "id": 4179,
                        "name": "Block",
                        "src": "4148:152:7"
                      }
                    ],
                    "id": 4180,
                    "name": "ForStatement",
                    "src": "4093:207:7"
                  },
                  {
                    "id": 4181,
                    "name": "PlaceholderStatement",
                    "src": "4309:1:7"
                  },
                  {
                    "children": [
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4147,
                                  "type": "uint256",
                                  "value": "index"
                                },
                                "id": 4182,
                                "name": "Identifier",
                                "src": "4325:5:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 4183,
                                "name": "Literal",
                                "src": "4333:1:7"
                              }
                            ],
                            "id": 4184,
                            "name": "Assignment",
                            "src": "4325:9:7"
                          }
                        ],
                        "id": 4185,
                        "name": "ExpressionStatement",
                        "src": "4325:9:7"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4147,
                              "type": "uint256",
                              "value": "index"
                            },
                            "id": 4186,
                            "name": "Identifier",
                            "src": "4335:5:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3912,
                                  "type": "struct Controller.GlobalConstraint storage ref[] storage ref",
                                  "value": "globalConstraints"
                                },
                                "id": 4187,
                                "name": "Identifier",
                                "src": "4341:17:7"
                              }
                            ],
                            "id": 4188,
                            "name": "MemberAccess",
                            "src": "4341:24:7"
                          }
                        ],
                        "id": 4189,
                        "name": "BinaryOperation",
                        "src": "4335:30:7"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4147,
                                  "type": "uint256",
                                  "value": "index"
                                },
                                "id": 4190,
                                "name": "Identifier",
                                "src": "4366:5:7"
                              }
                            ],
                            "id": 4191,
                            "name": "UnaryOperation",
                            "src": "4366:7:7"
                          }
                        ],
                        "id": 4192,
                        "name": "ExpressionStatement",
                        "src": "4366:7:7"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12014,
                                      "type": "function (bool) pure",
                                      "value": "require"
                                    },
                                    "id": 4193,
                                    "name": "Identifier",
                                    "src": "4389:7:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bool",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "post",
                                          "referencedDeclaration": 6697,
                                          "type": "function (address,bytes32,bytes32) external returns (bool)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "contract GlobalConstraintInterface"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "type": "contract GlobalConstraintInterface",
                                                  "type_conversion": true
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 6698,
                                                      "type": "type(contract GlobalConstraintInterface)",
                                                      "value": "GlobalConstraintInterface"
                                                    },
                                                    "id": 4194,
                                                    "name": "Identifier",
                                                    "src": "4398:25:7"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "gcAddress",
                                                      "referencedDeclaration": 3889,
                                                      "type": "address"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "type": "struct Controller.GlobalConstraint storage ref"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 3912,
                                                              "type": "struct Controller.GlobalConstraint storage ref[] storage ref",
                                                              "value": "globalConstraints"
                                                            },
                                                            "id": 4195,
                                                            "name": "Identifier",
                                                            "src": "4424:17:7"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 4147,
                                                              "type": "uint256",
                                                              "value": "index"
                                                            },
                                                            "id": 4196,
                                                            "name": "Identifier",
                                                            "src": "4442:5:7"
                                                          }
                                                        ],
                                                        "id": 4197,
                                                        "name": "IndexAccess",
                                                        "src": "4424:24:7"
                                                      }
                                                    ],
                                                    "id": 4198,
                                                    "name": "MemberAccess",
                                                    "src": "4424:34:7"
                                                  }
                                                ],
                                                "id": 4199,
                                                "name": "FunctionCall",
                                                "src": "4398:61:7"
                                              }
                                            ],
                                            "id": 4200,
                                            "name": "TupleExpression",
                                            "src": "4397:63:7"
                                          }
                                        ],
                                        "id": 4201,
                                        "name": "MemberAccess",
                                        "src": "4397:68:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "sender",
                                          "referencedDeclaration": null,
                                          "type": "address"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 12011,
                                              "type": "msg",
                                              "value": "msg"
                                            },
                                            "id": 4202,
                                            "name": "Identifier",
                                            "src": "4466:3:7"
                                          }
                                        ],
                                        "id": 4203,
                                        "name": "MemberAccess",
                                        "src": "4466:10:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "params",
                                          "referencedDeclaration": 3891,
                                          "type": "bytes32"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "struct Controller.GlobalConstraint storage ref"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3912,
                                                  "type": "struct Controller.GlobalConstraint storage ref[] storage ref",
                                                  "value": "globalConstraints"
                                                },
                                                "id": 4204,
                                                "name": "Identifier",
                                                "src": "4478:17:7"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 4147,
                                                  "type": "uint256",
                                                  "value": "index"
                                                },
                                                "id": 4205,
                                                "name": "Identifier",
                                                "src": "4496:5:7"
                                              }
                                            ],
                                            "id": 4206,
                                            "name": "IndexAccess",
                                            "src": "4478:24:7"
                                          }
                                        ],
                                        "id": 4207,
                                        "name": "MemberAccess",
                                        "src": "4478:31:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4144,
                                          "type": "bytes32",
                                          "value": "func"
                                        },
                                        "id": 4208,
                                        "name": "Identifier",
                                        "src": "4511:4:7"
                                      }
                                    ],
                                    "id": 4209,
                                    "name": "FunctionCall",
                                    "src": "4397:119:7"
                                  }
                                ],
                                "id": 4210,
                                "name": "FunctionCall",
                                "src": "4389:128:7"
                              }
                            ],
                            "id": 4211,
                            "name": "ExpressionStatement",
                            "src": "4389:128:7"
                          }
                        ],
                        "id": 4212,
                        "name": "Block",
                        "src": "4375:153:7"
                      }
                    ],
                    "id": 4213,
                    "name": "ForStatement",
                    "src": "4320:208:7"
                  }
                ],
                "id": 4214,
                "name": "Block",
                "src": "4063:471:7"
              }
            ],
            "id": 4215,
            "name": "ModifierDefinition",
            "src": "4016:518:7"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "mintReputation",
              "payable": false,
              "scope": 4967,
              "stateMutability": "nonpayable",
              "superFunction": 4984,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 4245,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int256",
                          "type": "int256"
                        },
                        "id": 4216,
                        "name": "ElementaryTypeName",
                        "src": "4756:6:7"
                      }
                    ],
                    "id": 4217,
                    "name": "VariableDeclaration",
                    "src": "4756:14:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_beneficiary",
                      "scope": 4245,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4218,
                        "name": "ElementaryTypeName",
                        "src": "4772:7:7"
                      }
                    ],
                    "id": 4219,
                    "name": "VariableDeclaration",
                    "src": "4772:20:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4245,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4220,
                        "name": "ElementaryTypeName",
                        "src": "4793:7:7"
                      }
                    ],
                    "id": 4221,
                    "name": "VariableDeclaration",
                    "src": "4793:7:7"
                  }
                ],
                "id": 4222,
                "name": "ParameterList",
                "src": "4755:46:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4245,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4228,
                        "name": "ElementaryTypeName",
                        "src": "4896:4:7"
                      }
                    ],
                    "id": 4229,
                    "name": "VariableDeclaration",
                    "src": "4896:4:7"
                  }
                ],
                "id": 4230,
                "name": "ParameterList",
                "src": "4895:6:7"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4082,
                      "type": "modifier ()",
                      "value": "onlyRegisteredScheme"
                    },
                    "id": 4223,
                    "name": "Identifier",
                    "src": "4817:20:7"
                  }
                ],
                "id": 4224,
                "name": "ModifierInvocation",
                "src": "4817:20:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4215,
                      "type": "modifier (bytes32)",
                      "value": "onlySubjectToConstraint"
                    },
                    "id": 4225,
                    "name": "Identifier",
                    "src": "4842:23:7"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "6d696e7452657075746174696f6e",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"mintReputation\"",
                      "value": "mintReputation"
                    },
                    "id": 4226,
                    "name": "Literal",
                    "src": "4866:16:7"
                  }
                ],
                "id": 4227,
                "name": "ModifierInvocation",
                "src": "4842:41:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3924,
                              "type": "function (address,address,int256)",
                              "value": "MintReputation"
                            },
                            "id": 4231,
                            "name": "Identifier",
                            "src": "4916:14:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 4232,
                                "name": "Identifier",
                                "src": "4931:3:7"
                              }
                            ],
                            "id": 4233,
                            "name": "MemberAccess",
                            "src": "4931:10:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4219,
                              "type": "address",
                              "value": "_beneficiary"
                            },
                            "id": 4234,
                            "name": "Identifier",
                            "src": "4943:12:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4217,
                              "type": "int256",
                              "value": "_amount"
                            },
                            "id": 4235,
                            "name": "Identifier",
                            "src": "4957:7:7"
                          }
                        ],
                        "id": 4236,
                        "name": "FunctionCall",
                        "src": "4916:49:7"
                      }
                    ],
                    "id": 4237,
                    "name": "ExpressionStatement",
                    "src": "4916:49:7"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 4230
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "mint",
                              "referencedDeclaration": 5351,
                              "type": "function (address,int256) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3907,
                                  "type": "contract Reputation",
                                  "value": "nativeReputation"
                                },
                                "id": 4238,
                                "name": "Identifier",
                                "src": "4982:16:7"
                              }
                            ],
                            "id": 4239,
                            "name": "MemberAccess",
                            "src": "4982:21:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4219,
                              "type": "address",
                              "value": "_beneficiary"
                            },
                            "id": 4240,
                            "name": "Identifier",
                            "src": "5004:12:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4217,
                              "type": "int256",
                              "value": "_amount"
                            },
                            "id": 4241,
                            "name": "Identifier",
                            "src": "5018:7:7"
                          }
                        ],
                        "id": 4242,
                        "name": "FunctionCall",
                        "src": "4982:44:7"
                      }
                    ],
                    "id": 4243,
                    "name": "Return",
                    "src": "4975:51:7"
                  }
                ],
                "id": 4244,
                "name": "Block",
                "src": "4906:127:7"
              }
            ],
            "id": 4245,
            "name": "FunctionDefinition",
            "src": "4732:301:7"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "mintTokens",
              "payable": false,
              "scope": 4967,
              "stateMutability": "nonpayable",
              "superFunction": 4995,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 4275,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 4246,
                        "name": "ElementaryTypeName",
                        "src": "5242:7:7"
                      }
                    ],
                    "id": 4247,
                    "name": "VariableDeclaration",
                    "src": "5242:15:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_beneficiary",
                      "scope": 4275,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4248,
                        "name": "ElementaryTypeName",
                        "src": "5259:7:7"
                      }
                    ],
                    "id": 4249,
                    "name": "VariableDeclaration",
                    "src": "5259:20:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4275,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4250,
                        "name": "ElementaryTypeName",
                        "src": "5280:7:7"
                      }
                    ],
                    "id": 4251,
                    "name": "VariableDeclaration",
                    "src": "5280:7:7"
                  }
                ],
                "id": 4252,
                "name": "ParameterList",
                "src": "5241:47:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4275,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4258,
                        "name": "ElementaryTypeName",
                        "src": "5379:4:7"
                      }
                    ],
                    "id": 4259,
                    "name": "VariableDeclaration",
                    "src": "5379:4:7"
                  }
                ],
                "id": 4260,
                "name": "ParameterList",
                "src": "5378:6:7"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4082,
                      "type": "modifier ()",
                      "value": "onlyRegisteredScheme"
                    },
                    "id": 4253,
                    "name": "Identifier",
                    "src": "5304:20:7"
                  }
                ],
                "id": 4254,
                "name": "ModifierInvocation",
                "src": "5304:20:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4215,
                      "type": "modifier (bytes32)",
                      "value": "onlySubjectToConstraint"
                    },
                    "id": 4255,
                    "name": "Identifier",
                    "src": "5329:23:7"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "6d696e74546f6b656e73",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"mintTokens\"",
                      "value": "mintTokens"
                    },
                    "id": 4256,
                    "name": "Literal",
                    "src": "5353:12:7"
                  }
                ],
                "id": 4257,
                "name": "ModifierInvocation",
                "src": "5329:37:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3932,
                              "type": "function (address,address,uint256)",
                              "value": "MintTokens"
                            },
                            "id": 4261,
                            "name": "Identifier",
                            "src": "5399:10:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 4262,
                                "name": "Identifier",
                                "src": "5410:3:7"
                              }
                            ],
                            "id": 4263,
                            "name": "MemberAccess",
                            "src": "5410:10:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4249,
                              "type": "address",
                              "value": "_beneficiary"
                            },
                            "id": 4264,
                            "name": "Identifier",
                            "src": "5422:12:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4247,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 4265,
                            "name": "Identifier",
                            "src": "5436:7:7"
                          }
                        ],
                        "id": 4266,
                        "name": "FunctionCall",
                        "src": "5399:45:7"
                      }
                    ],
                    "id": 4267,
                    "name": "ExpressionStatement",
                    "src": "5399:45:7"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 4260
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "mint",
                              "referencedDeclaration": 11733,
                              "type": "function (address,uint256) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3905,
                                  "type": "contract DAOToken",
                                  "value": "nativeToken"
                                },
                                "id": 4268,
                                "name": "Identifier",
                                "src": "5461:11:7"
                              }
                            ],
                            "id": 4269,
                            "name": "MemberAccess",
                            "src": "5461:16:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4249,
                              "type": "address",
                              "value": "_beneficiary"
                            },
                            "id": 4270,
                            "name": "Identifier",
                            "src": "5478:12:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4247,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 4271,
                            "name": "Identifier",
                            "src": "5492:7:7"
                          }
                        ],
                        "id": 4272,
                        "name": "FunctionCall",
                        "src": "5461:39:7"
                      }
                    ],
                    "id": 4273,
                    "name": "Return",
                    "src": "5454:46:7"
                  }
                ],
                "id": 4274,
                "name": "Block",
                "src": "5389:118:7"
              }
            ],
            "id": 4275,
            "name": "FunctionDefinition",
            "src": "5222:285:7"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "registerScheme",
              "payable": false,
              "scope": 4967,
              "stateMutability": "nonpayable",
              "superFunction": 5008,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_scheme",
                      "scope": 4372,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4276,
                        "name": "ElementaryTypeName",
                        "src": "5808:7:7"
                      }
                    ],
                    "id": 4277,
                    "name": "VariableDeclaration",
                    "src": "5808:15:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_paramsHash",
                      "scope": 4372,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 4278,
                        "name": "ElementaryTypeName",
                        "src": "5825:7:7"
                      }
                    ],
                    "id": 4279,
                    "name": "VariableDeclaration",
                    "src": "5825:19:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_permissions",
                      "scope": 4372,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes4",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes4",
                          "type": "bytes4"
                        },
                        "id": 4280,
                        "name": "ElementaryTypeName",
                        "src": "5846:6:7"
                      }
                    ],
                    "id": 4281,
                    "name": "VariableDeclaration",
                    "src": "5846:19:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4372,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4282,
                        "name": "ElementaryTypeName",
                        "src": "5866:7:7"
                      }
                    ],
                    "id": 4283,
                    "name": "VariableDeclaration",
                    "src": "5866:7:7"
                  }
                ],
                "id": 4284,
                "name": "ParameterList",
                "src": "5807:67:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4372,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4290,
                        "name": "ElementaryTypeName",
                        "src": "5971:4:7"
                      }
                    ],
                    "id": 4291,
                    "name": "VariableDeclaration",
                    "src": "5971:4:7"
                  }
                ],
                "id": 4292,
                "name": "ParameterList",
                "src": "5970:6:7"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4102,
                      "type": "modifier ()",
                      "value": "onlyRegisteringSchemes"
                    },
                    "id": 4285,
                    "name": "Identifier",
                    "src": "5890:22:7"
                  }
                ],
                "id": 4286,
                "name": "ModifierInvocation",
                "src": "5890:22:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4215,
                      "type": "modifier (bytes32)",
                      "value": "onlySubjectToConstraint"
                    },
                    "id": 4287,
                    "name": "Identifier",
                    "src": "5917:23:7"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "7265676973746572536368656d65",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"registerScheme\"",
                      "value": "registerScheme"
                    },
                    "id": 4288,
                    "name": "Literal",
                    "src": "5941:16:7"
                  }
                ],
                "id": 4289,
                "name": "ModifierInvocation",
                "src": "5917:41:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        4294
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "scheme",
                          "scope": 4372,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct Controller.Scheme memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Scheme",
                              "referencedDeclaration": 3887,
                              "type": "struct Controller.Scheme storage pointer"
                            },
                            "id": 4293,
                            "name": "UserDefinedTypeName",
                            "src": "5992:6:7"
                          }
                        ],
                        "id": 4294,
                        "name": "VariableDeclaration",
                        "src": "5992:20:7"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Controller.Scheme storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3901,
                              "type": "mapping(address => struct Controller.Scheme storage ref)",
                              "value": "schemes"
                            },
                            "id": 4295,
                            "name": "Identifier",
                            "src": "6015:7:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4277,
                              "type": "address",
                              "value": "_scheme"
                            },
                            "id": 4296,
                            "name": "Identifier",
                            "src": "6023:7:7"
                          }
                        ],
                        "id": 4297,
                        "name": "IndexAccess",
                        "src": "6015:16:7"
                      }
                    ],
                    "id": 4298,
                    "name": "VariableDeclarationStatement",
                    "src": "5992:39:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 4299,
                            "name": "Identifier",
                            "src": "6322:7:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "&",
                                  "type": "bytes4"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "&",
                                      "type": "bytes4"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "bytes4",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_15_by_1",
                                                  "typeString": "int_const 15"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "type": "type(bytes4)",
                                              "value": "bytes4"
                                            },
                                            "id": 4300,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "6330:6:7"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "3135",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 15",
                                              "value": "15"
                                            },
                                            "id": 4301,
                                            "name": "Literal",
                                            "src": "6337:2:7"
                                          }
                                        ],
                                        "id": 4302,
                                        "name": "FunctionCall",
                                        "src": "6330:10:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "bytes4"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "^",
                                              "type": "bytes4"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 4281,
                                                  "type": "bytes4",
                                                  "value": "_permissions"
                                                },
                                                "id": 4303,
                                                "name": "Identifier",
                                                "src": "6342:12:7"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "permissions",
                                                  "referencedDeclaration": 3886,
                                                  "type": "bytes4"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 4294,
                                                      "type": "struct Controller.Scheme memory",
                                                      "value": "scheme"
                                                    },
                                                    "id": 4304,
                                                    "name": "Identifier",
                                                    "src": "6355:6:7"
                                                  }
                                                ],
                                                "id": 4305,
                                                "name": "MemberAccess",
                                                "src": "6355:18:7"
                                              }
                                            ],
                                            "id": 4306,
                                            "name": "BinaryOperation",
                                            "src": "6342:31:7"
                                          }
                                        ],
                                        "id": 4307,
                                        "name": "TupleExpression",
                                        "src": "6341:33:7"
                                      }
                                    ],
                                    "id": 4308,
                                    "name": "BinaryOperation",
                                    "src": "6330:44:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "bytes4"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "~",
                                          "prefix": true,
                                          "type": "bytes4"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "permissions",
                                              "referencedDeclaration": 3886,
                                              "type": "bytes4"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "struct Controller.Scheme storage ref"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 3901,
                                                      "type": "mapping(address => struct Controller.Scheme storage ref)",
                                                      "value": "schemes"
                                                    },
                                                    "id": 4309,
                                                    "name": "Identifier",
                                                    "src": "6377:7:7"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "sender",
                                                      "referencedDeclaration": null,
                                                      "type": "address"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 12011,
                                                          "type": "msg",
                                                          "value": "msg"
                                                        },
                                                        "id": 4310,
                                                        "name": "Identifier",
                                                        "src": "6385:3:7"
                                                      }
                                                    ],
                                                    "id": 4311,
                                                    "name": "MemberAccess",
                                                    "src": "6385:10:7"
                                                  }
                                                ],
                                                "id": 4312,
                                                "name": "IndexAccess",
                                                "src": "6377:19:7"
                                              }
                                            ],
                                            "id": 4313,
                                            "name": "MemberAccess",
                                            "src": "6377:31:7"
                                          }
                                        ],
                                        "id": 4314,
                                        "name": "UnaryOperation",
                                        "src": "6376:32:7"
                                      }
                                    ],
                                    "id": 4315,
                                    "name": "TupleExpression",
                                    "src": "6375:34:7"
                                  }
                                ],
                                "id": 4316,
                                "name": "BinaryOperation",
                                "src": "6330:79:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes4",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(bytes4)",
                                      "value": "bytes4"
                                    },
                                    "id": 4317,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "6413:6:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 4318,
                                    "name": "Literal",
                                    "src": "6420:1:7"
                                  }
                                ],
                                "id": 4319,
                                "name": "FunctionCall",
                                "src": "6413:9:7"
                              }
                            ],
                            "id": 4320,
                            "name": "BinaryOperation",
                            "src": "6330:92:7"
                          }
                        ],
                        "id": 4321,
                        "name": "FunctionCall",
                        "src": "6322:101:7"
                      }
                    ],
                    "id": 4322,
                    "name": "ExpressionStatement",
                    "src": "6322:101:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 4323,
                            "name": "Identifier",
                            "src": "6518:7:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "&",
                                  "type": "bytes4"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes4",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_15_by_1",
                                              "typeString": "int_const 15"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(bytes4)",
                                          "value": "bytes4"
                                        },
                                        "id": 4324,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "6526:6:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3135",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 15",
                                          "value": "15"
                                        },
                                        "id": 4325,
                                        "name": "Literal",
                                        "src": "6533:2:7"
                                      }
                                    ],
                                    "id": 4326,
                                    "name": "FunctionCall",
                                    "src": "6526:10:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "bytes4"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "&",
                                          "type": "bytes4"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "permissions",
                                              "referencedDeclaration": 3886,
                                              "type": "bytes4"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 4294,
                                                  "type": "struct Controller.Scheme memory",
                                                  "value": "scheme"
                                                },
                                                "id": 4327,
                                                "name": "Identifier",
                                                "src": "6538:6:7"
                                              }
                                            ],
                                            "id": 4328,
                                            "name": "MemberAccess",
                                            "src": "6538:18:7"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "bytes4"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "~",
                                                  "prefix": true,
                                                  "type": "bytes4"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "permissions",
                                                      "referencedDeclaration": 3886,
                                                      "type": "bytes4"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "type": "struct Controller.Scheme storage ref"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 3901,
                                                              "type": "mapping(address => struct Controller.Scheme storage ref)",
                                                              "value": "schemes"
                                                            },
                                                            "id": 4329,
                                                            "name": "Identifier",
                                                            "src": "6559:7:7"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "member_name": "sender",
                                                              "referencedDeclaration": null,
                                                              "type": "address"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": null,
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 12011,
                                                                  "type": "msg",
                                                                  "value": "msg"
                                                                },
                                                                "id": 4330,
                                                                "name": "Identifier",
                                                                "src": "6567:3:7"
                                                              }
                                                            ],
                                                            "id": 4331,
                                                            "name": "MemberAccess",
                                                            "src": "6567:10:7"
                                                          }
                                                        ],
                                                        "id": 4332,
                                                        "name": "IndexAccess",
                                                        "src": "6559:19:7"
                                                      }
                                                    ],
                                                    "id": 4333,
                                                    "name": "MemberAccess",
                                                    "src": "6559:31:7"
                                                  }
                                                ],
                                                "id": 4334,
                                                "name": "UnaryOperation",
                                                "src": "6558:32:7"
                                              }
                                            ],
                                            "id": 4335,
                                            "name": "TupleExpression",
                                            "src": "6557:34:7"
                                          }
                                        ],
                                        "id": 4336,
                                        "name": "BinaryOperation",
                                        "src": "6538:53:7"
                                      }
                                    ],
                                    "id": 4337,
                                    "name": "TupleExpression",
                                    "src": "6537:55:7"
                                  }
                                ],
                                "id": 4338,
                                "name": "BinaryOperation",
                                "src": "6526:66:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes4",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(bytes4)",
                                      "value": "bytes4"
                                    },
                                    "id": 4339,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "6596:6:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 4340,
                                    "name": "Literal",
                                    "src": "6603:1:7"
                                  }
                                ],
                                "id": 4341,
                                "name": "FunctionCall",
                                "src": "6596:9:7"
                              }
                            ],
                            "id": 4342,
                            "name": "BinaryOperation",
                            "src": "6526:79:7"
                          }
                        ],
                        "id": 4343,
                        "name": "FunctionCall",
                        "src": "6518:88:7"
                      }
                    ],
                    "id": 4344,
                    "name": "ExpressionStatement",
                    "src": "6518:88:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "paramsHash",
                              "referencedDeclaration": 3884,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct Controller.Scheme storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3901,
                                      "type": "mapping(address => struct Controller.Scheme storage ref)",
                                      "value": "schemes"
                                    },
                                    "id": 4345,
                                    "name": "Identifier",
                                    "src": "6650:7:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4277,
                                      "type": "address",
                                      "value": "_scheme"
                                    },
                                    "id": 4346,
                                    "name": "Identifier",
                                    "src": "6658:7:7"
                                  }
                                ],
                                "id": 4347,
                                "name": "IndexAccess",
                                "src": "6650:16:7"
                              }
                            ],
                            "id": 4348,
                            "name": "MemberAccess",
                            "src": "6650:27:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4279,
                              "type": "bytes32",
                              "value": "_paramsHash"
                            },
                            "id": 4349,
                            "name": "Identifier",
                            "src": "6680:11:7"
                          }
                        ],
                        "id": 4350,
                        "name": "Assignment",
                        "src": "6650:41:7"
                      }
                    ],
                    "id": 4351,
                    "name": "ExpressionStatement",
                    "src": "6650:41:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes4"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "permissions",
                              "referencedDeclaration": 3886,
                              "type": "bytes4"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct Controller.Scheme storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3901,
                                      "type": "mapping(address => struct Controller.Scheme storage ref)",
                                      "value": "schemes"
                                    },
                                    "id": 4352,
                                    "name": "Identifier",
                                    "src": "6701:7:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4277,
                                      "type": "address",
                                      "value": "_scheme"
                                    },
                                    "id": 4353,
                                    "name": "Identifier",
                                    "src": "6709:7:7"
                                  }
                                ],
                                "id": 4354,
                                "name": "IndexAccess",
                                "src": "6701:16:7"
                              }
                            ],
                            "id": 4355,
                            "name": "MemberAccess",
                            "src": "6701:28:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "|",
                              "type": "bytes4"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4281,
                                  "type": "bytes4",
                                  "value": "_permissions"
                                },
                                "id": 4356,
                                "name": "Identifier",
                                "src": "6732:12:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes4",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(bytes4)",
                                      "value": "bytes4"
                                    },
                                    "id": 4357,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "6745:6:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 4358,
                                    "name": "Literal",
                                    "src": "6752:1:7"
                                  }
                                ],
                                "id": 4359,
                                "name": "FunctionCall",
                                "src": "6745:9:7"
                              }
                            ],
                            "id": 4360,
                            "name": "BinaryOperation",
                            "src": "6732:22:7"
                          }
                        ],
                        "id": 4361,
                        "name": "Assignment",
                        "src": "6701:53:7"
                      }
                    ],
                    "id": 4362,
                    "name": "ExpressionStatement",
                    "src": "6701:53:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3938,
                              "type": "function (address,address)",
                              "value": "RegisterScheme"
                            },
                            "id": 4363,
                            "name": "Identifier",
                            "src": "6764:14:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 4364,
                                "name": "Identifier",
                                "src": "6779:3:7"
                              }
                            ],
                            "id": 4365,
                            "name": "MemberAccess",
                            "src": "6779:10:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4277,
                              "type": "address",
                              "value": "_scheme"
                            },
                            "id": 4366,
                            "name": "Identifier",
                            "src": "6791:7:7"
                          }
                        ],
                        "id": 4367,
                        "name": "FunctionCall",
                        "src": "6764:35:7"
                      }
                    ],
                    "id": 4368,
                    "name": "ExpressionStatement",
                    "src": "6764:35:7"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 4292
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 4369,
                        "name": "Literal",
                        "src": "6816:4:7"
                      }
                    ],
                    "id": 4370,
                    "name": "Return",
                    "src": "6809:11:7"
                  }
                ],
                "id": 4371,
                "name": "Block",
                "src": "5981:846:7"
              }
            ],
            "id": 4372,
            "name": "FunctionDefinition",
            "src": "5784:1043:7"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "unregisterScheme",
              "payable": false,
              "scope": 4967,
              "stateMutability": "nonpayable",
              "superFunction": 5017,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_scheme",
                      "scope": 4440,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4373,
                        "name": "ElementaryTypeName",
                        "src": "7003:7:7"
                      }
                    ],
                    "id": 4374,
                    "name": "VariableDeclaration",
                    "src": "7003:15:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4440,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4375,
                        "name": "ElementaryTypeName",
                        "src": "7019:7:7"
                      }
                    ],
                    "id": 4376,
                    "name": "VariableDeclaration",
                    "src": "7019:7:7"
                  }
                ],
                "id": 4377,
                "name": "ParameterList",
                "src": "7001:26:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4440,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4383,
                        "name": "ElementaryTypeName",
                        "src": "7126:4:7"
                      }
                    ],
                    "id": 4384,
                    "name": "VariableDeclaration",
                    "src": "7126:4:7"
                  }
                ],
                "id": 4385,
                "name": "ParameterList",
                "src": "7125:6:7"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4102,
                      "type": "modifier ()",
                      "value": "onlyRegisteringSchemes"
                    },
                    "id": 4378,
                    "name": "Identifier",
                    "src": "7043:22:7"
                  }
                ],
                "id": 4379,
                "name": "ModifierInvocation",
                "src": "7043:22:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4215,
                      "type": "modifier (bytes32)",
                      "value": "onlySubjectToConstraint"
                    },
                    "id": 4380,
                    "name": "Identifier",
                    "src": "7070:23:7"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "756e7265676973746572536368656d65",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"unregisterScheme\"",
                      "value": "unregisterScheme"
                    },
                    "id": 4381,
                    "name": "Literal",
                    "src": "7094:18:7"
                  }
                ],
                "id": 4382,
                "name": "ModifierInvocation",
                "src": "7070:43:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "bytes4"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "permissions",
                                  "referencedDeclaration": 3886,
                                  "type": "bytes4"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "struct Controller.Scheme storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3901,
                                          "type": "mapping(address => struct Controller.Scheme storage ref)",
                                          "value": "schemes"
                                        },
                                        "id": 4386,
                                        "name": "Identifier",
                                        "src": "7188:7:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4374,
                                          "type": "address",
                                          "value": "_scheme"
                                        },
                                        "id": 4387,
                                        "name": "Identifier",
                                        "src": "7196:7:7"
                                      }
                                    ],
                                    "id": 4388,
                                    "name": "IndexAccess",
                                    "src": "7188:16:7"
                                  }
                                ],
                                "id": 4389,
                                "name": "MemberAccess",
                                "src": "7188:28:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes4",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(bytes4)",
                                      "value": "bytes4"
                                    },
                                    "id": 4390,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "7217:6:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 4391,
                                    "name": "Literal",
                                    "src": "7224:1:7"
                                  }
                                ],
                                "id": 4392,
                                "name": "FunctionCall",
                                "src": "7217:9:7"
                              }
                            ],
                            "id": 4393,
                            "name": "BinaryOperation",
                            "src": "7188:38:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes4",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes4)",
                                  "value": "bytes4"
                                },
                                "id": 4394,
                                "name": "ElementaryTypeNameExpression",
                                "src": "7230:6:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 4395,
                                "name": "Literal",
                                "src": "7237:1:7"
                              }
                            ],
                            "id": 4396,
                            "name": "FunctionCall",
                            "src": "7230:9:7"
                          }
                        ],
                        "id": 4397,
                        "name": "BinaryOperation",
                        "src": "7188:51:7"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 4385
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "66616c7365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "false"
                                },
                                "id": 4398,
                                "name": "Literal",
                                "src": "7262:5:7"
                              }
                            ],
                            "id": 4399,
                            "name": "Return",
                            "src": "7255:12:7"
                          }
                        ],
                        "id": 4400,
                        "name": "Block",
                        "src": "7241:39:7"
                      }
                    ],
                    "id": 4401,
                    "name": "IfStatement",
                    "src": "7184:96:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 4402,
                            "name": "Identifier",
                            "src": "7351:7:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "&",
                                  "type": "bytes4"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes4",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_15_by_1",
                                              "typeString": "int_const 15"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(bytes4)",
                                          "value": "bytes4"
                                        },
                                        "id": 4403,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "7359:6:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3135",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 15",
                                          "value": "15"
                                        },
                                        "id": 4404,
                                        "name": "Literal",
                                        "src": "7366:2:7"
                                      }
                                    ],
                                    "id": 4405,
                                    "name": "FunctionCall",
                                    "src": "7359:10:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "bytes4"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "&",
                                          "type": "bytes4"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "permissions",
                                              "referencedDeclaration": 3886,
                                              "type": "bytes4"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "struct Controller.Scheme storage ref"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 3901,
                                                      "type": "mapping(address => struct Controller.Scheme storage ref)",
                                                      "value": "schemes"
                                                    },
                                                    "id": 4406,
                                                    "name": "Identifier",
                                                    "src": "7371:7:7"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 4374,
                                                      "type": "address",
                                                      "value": "_scheme"
                                                    },
                                                    "id": 4407,
                                                    "name": "Identifier",
                                                    "src": "7379:7:7"
                                                  }
                                                ],
                                                "id": 4408,
                                                "name": "IndexAccess",
                                                "src": "7371:16:7"
                                              }
                                            ],
                                            "id": 4409,
                                            "name": "MemberAccess",
                                            "src": "7371:28:7"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "bytes4"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "~",
                                                  "prefix": true,
                                                  "type": "bytes4"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "permissions",
                                                      "referencedDeclaration": 3886,
                                                      "type": "bytes4"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "type": "struct Controller.Scheme storage ref"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 3901,
                                                              "type": "mapping(address => struct Controller.Scheme storage ref)",
                                                              "value": "schemes"
                                                            },
                                                            "id": 4410,
                                                            "name": "Identifier",
                                                            "src": "7402:7:7"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "member_name": "sender",
                                                              "referencedDeclaration": null,
                                                              "type": "address"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": null,
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 12011,
                                                                  "type": "msg",
                                                                  "value": "msg"
                                                                },
                                                                "id": 4411,
                                                                "name": "Identifier",
                                                                "src": "7410:3:7"
                                                              }
                                                            ],
                                                            "id": 4412,
                                                            "name": "MemberAccess",
                                                            "src": "7410:10:7"
                                                          }
                                                        ],
                                                        "id": 4413,
                                                        "name": "IndexAccess",
                                                        "src": "7402:19:7"
                                                      }
                                                    ],
                                                    "id": 4414,
                                                    "name": "MemberAccess",
                                                    "src": "7402:31:7"
                                                  }
                                                ],
                                                "id": 4415,
                                                "name": "UnaryOperation",
                                                "src": "7401:32:7"
                                              }
                                            ],
                                            "id": 4416,
                                            "name": "TupleExpression",
                                            "src": "7400:34:7"
                                          }
                                        ],
                                        "id": 4417,
                                        "name": "BinaryOperation",
                                        "src": "7371:63:7"
                                      }
                                    ],
                                    "id": 4418,
                                    "name": "TupleExpression",
                                    "src": "7370:65:7"
                                  }
                                ],
                                "id": 4419,
                                "name": "BinaryOperation",
                                "src": "7359:76:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes4",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(bytes4)",
                                      "value": "bytes4"
                                    },
                                    "id": 4420,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "7439:6:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 4421,
                                    "name": "Literal",
                                    "src": "7446:1:7"
                                  }
                                ],
                                "id": 4422,
                                "name": "FunctionCall",
                                "src": "7439:9:7"
                              }
                            ],
                            "id": 4423,
                            "name": "BinaryOperation",
                            "src": "7359:89:7"
                          }
                        ],
                        "id": 4424,
                        "name": "FunctionCall",
                        "src": "7351:98:7"
                      }
                    ],
                    "id": 4425,
                    "name": "ExpressionStatement",
                    "src": "7351:98:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3944,
                              "type": "function (address,address)",
                              "value": "UnregisterScheme"
                            },
                            "id": 4426,
                            "name": "Identifier",
                            "src": "7479:16:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 4427,
                                "name": "Identifier",
                                "src": "7496:3:7"
                              }
                            ],
                            "id": 4428,
                            "name": "MemberAccess",
                            "src": "7496:10:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4374,
                              "type": "address",
                              "value": "_scheme"
                            },
                            "id": 4429,
                            "name": "Identifier",
                            "src": "7508:7:7"
                          }
                        ],
                        "id": 4430,
                        "name": "FunctionCall",
                        "src": "7479:37:7"
                      }
                    ],
                    "id": 4431,
                    "name": "ExpressionStatement",
                    "src": "7479:37:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "delete",
                          "prefix": true,
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "struct Controller.Scheme storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3901,
                                  "type": "mapping(address => struct Controller.Scheme storage ref)",
                                  "value": "schemes"
                                },
                                "id": 4432,
                                "name": "Identifier",
                                "src": "7533:7:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4374,
                                  "type": "address",
                                  "value": "_scheme"
                                },
                                "id": 4433,
                                "name": "Identifier",
                                "src": "7541:7:7"
                              }
                            ],
                            "id": 4434,
                            "name": "IndexAccess",
                            "src": "7533:16:7"
                          }
                        ],
                        "id": 4435,
                        "name": "UnaryOperation",
                        "src": "7526:23:7"
                      }
                    ],
                    "id": 4436,
                    "name": "ExpressionStatement",
                    "src": "7526:23:7"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 4385
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 4437,
                        "name": "Literal",
                        "src": "7566:4:7"
                      }
                    ],
                    "id": 4438,
                    "name": "Return",
                    "src": "7559:11:7"
                  }
                ],
                "id": 4439,
                "name": "Block",
                "src": "7136:441:7"
              }
            ],
            "id": 4440,
            "name": "FunctionDefinition",
            "src": "6976:601:7"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "unregisterSelf",
              "payable": false,
              "scope": 4967,
              "stateMutability": "nonpayable",
              "superFunction": 5024,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4476,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4441,
                        "name": "ElementaryTypeName",
                        "src": "7713:7:7"
                      }
                    ],
                    "id": 4442,
                    "name": "VariableDeclaration",
                    "src": "7713:7:7"
                  }
                ],
                "id": 4443,
                "name": "ParameterList",
                "src": "7712:9:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4476,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4444,
                        "name": "ElementaryTypeName",
                        "src": "7737:4:7"
                      }
                    ],
                    "id": 4445,
                    "name": "VariableDeclaration",
                    "src": "7737:4:7"
                  }
                ],
                "id": 4446,
                "name": "ParameterList",
                "src": "7736:6:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    4500
                                  ],
                                  "referencedDeclaration": 4500,
                                  "type": "function (address,address) view returns (bool)",
                                  "value": "isSchemeRegistered"
                                },
                                "id": 4447,
                                "name": "Identifier",
                                "src": "7757:18:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12011,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 4448,
                                    "name": "Identifier",
                                    "src": "7776:3:7"
                                  }
                                ],
                                "id": 4449,
                                "name": "MemberAccess",
                                "src": "7776:10:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 4450,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "7787:7:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 4451,
                                    "name": "Literal",
                                    "src": "7795:1:7"
                                  }
                                ],
                                "id": 4452,
                                "name": "FunctionCall",
                                "src": "7787:10:7"
                              }
                            ],
                            "id": 4453,
                            "name": "FunctionCall",
                            "src": "7757:41:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "66616c7365",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "false"
                            },
                            "id": 4454,
                            "name": "Literal",
                            "src": "7802:5:7"
                          }
                        ],
                        "id": 4455,
                        "name": "BinaryOperation",
                        "src": "7757:50:7"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 4446
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "66616c7365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "false"
                                },
                                "id": 4456,
                                "name": "Literal",
                                "src": "7830:5:7"
                              }
                            ],
                            "id": 4457,
                            "name": "Return",
                            "src": "7823:12:7"
                          }
                        ],
                        "id": 4458,
                        "name": "Block",
                        "src": "7809:37:7"
                      }
                    ],
                    "id": 4459,
                    "name": "IfStatement",
                    "src": "7753:93:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "delete",
                          "prefix": true,
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "struct Controller.Scheme storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3901,
                                  "type": "mapping(address => struct Controller.Scheme storage ref)",
                                  "value": "schemes"
                                },
                                "id": 4460,
                                "name": "Identifier",
                                "src": "7862:7:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12011,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 4461,
                                    "name": "Identifier",
                                    "src": "7870:3:7"
                                  }
                                ],
                                "id": 4462,
                                "name": "MemberAccess",
                                "src": "7870:10:7"
                              }
                            ],
                            "id": 4463,
                            "name": "IndexAccess",
                            "src": "7862:19:7"
                          }
                        ],
                        "id": 4464,
                        "name": "UnaryOperation",
                        "src": "7855:26:7"
                      }
                    ],
                    "id": 4465,
                    "name": "ExpressionStatement",
                    "src": "7855:26:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3944,
                              "type": "function (address,address)",
                              "value": "UnregisterScheme"
                            },
                            "id": 4466,
                            "name": "Identifier",
                            "src": "7891:16:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 4467,
                                "name": "Identifier",
                                "src": "7908:3:7"
                              }
                            ],
                            "id": 4468,
                            "name": "MemberAccess",
                            "src": "7908:10:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 4469,
                                "name": "Identifier",
                                "src": "7920:3:7"
                              }
                            ],
                            "id": 4470,
                            "name": "MemberAccess",
                            "src": "7920:10:7"
                          }
                        ],
                        "id": 4471,
                        "name": "FunctionCall",
                        "src": "7891:40:7"
                      }
                    ],
                    "id": 4472,
                    "name": "ExpressionStatement",
                    "src": "7891:40:7"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 4446
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 4473,
                        "name": "Literal",
                        "src": "7948:4:7"
                      }
                    ],
                    "id": 4474,
                    "name": "Return",
                    "src": "7941:11:7"
                  }
                ],
                "id": 4475,
                "name": "Block",
                "src": "7743:216:7"
              }
            ],
            "id": 4476,
            "name": "FunctionDefinition",
            "src": "7689:270:7"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "isSchemeRegistered",
              "payable": false,
              "scope": 4967,
              "stateMutability": "view",
              "superFunction": 5033,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_scheme",
                      "scope": 4500,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4477,
                        "name": "ElementaryTypeName",
                        "src": "7993:7:7"
                      }
                    ],
                    "id": 4478,
                    "name": "VariableDeclaration",
                    "src": "7993:15:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4500,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4479,
                        "name": "ElementaryTypeName",
                        "src": "8009:7:7"
                      }
                    ],
                    "id": 4480,
                    "name": "VariableDeclaration",
                    "src": "8009:7:7"
                  }
                ],
                "id": 4481,
                "name": "ParameterList",
                "src": "7992:25:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4500,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4482,
                        "name": "ElementaryTypeName",
                        "src": "8042:4:7"
                      }
                    ],
                    "id": 4483,
                    "name": "VariableDeclaration",
                    "src": "8042:4:7"
                  }
                ],
                "id": 4484,
                "name": "ParameterList",
                "src": "8041:6:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 4484
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "&",
                                  "type": "bytes4"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "permissions",
                                      "referencedDeclaration": 3886,
                                      "type": "bytes4"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct Controller.Scheme storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3901,
                                              "type": "mapping(address => struct Controller.Scheme storage ref)",
                                              "value": "schemes"
                                            },
                                            "id": 4485,
                                            "name": "Identifier",
                                            "src": "8066:7:7"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4478,
                                              "type": "address",
                                              "value": "_scheme"
                                            },
                                            "id": 4486,
                                            "name": "Identifier",
                                            "src": "8074:7:7"
                                          }
                                        ],
                                        "id": 4487,
                                        "name": "IndexAccess",
                                        "src": "8066:16:7"
                                      }
                                    ],
                                    "id": 4488,
                                    "name": "MemberAccess",
                                    "src": "8066:28:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes4",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(bytes4)",
                                          "value": "bytes4"
                                        },
                                        "id": 4489,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "8095:6:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 4490,
                                        "name": "Literal",
                                        "src": "8102:1:7"
                                      }
                                    ],
                                    "id": 4491,
                                    "name": "FunctionCall",
                                    "src": "8095:9:7"
                                  }
                                ],
                                "id": 4492,
                                "name": "BinaryOperation",
                                "src": "8066:38:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes4",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(bytes4)",
                                      "value": "bytes4"
                                    },
                                    "id": 4493,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "8108:6:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 4494,
                                    "name": "Literal",
                                    "src": "8115:1:7"
                                  }
                                ],
                                "id": 4495,
                                "name": "FunctionCall",
                                "src": "8108:9:7"
                              }
                            ],
                            "id": 4496,
                            "name": "BinaryOperation",
                            "src": "8066:51:7"
                          }
                        ],
                        "id": 4497,
                        "name": "TupleExpression",
                        "src": "8065:53:7"
                      }
                    ],
                    "id": 4498,
                    "name": "Return",
                    "src": "8058:60:7"
                  }
                ],
                "id": 4499,
                "name": "Block",
                "src": "8048:77:7"
              }
            ],
            "id": 4500,
            "name": "FunctionDefinition",
            "src": "7965:160:7"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getSchemeParameters",
              "payable": false,
              "scope": 4967,
              "stateMutability": "view",
              "superFunction": 5042,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_scheme",
                      "scope": 4515,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4501,
                        "name": "ElementaryTypeName",
                        "src": "8160:7:7"
                      }
                    ],
                    "id": 4502,
                    "name": "VariableDeclaration",
                    "src": "8160:15:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4515,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4503,
                        "name": "ElementaryTypeName",
                        "src": "8176:7:7"
                      }
                    ],
                    "id": 4504,
                    "name": "VariableDeclaration",
                    "src": "8176:7:7"
                  }
                ],
                "id": 4505,
                "name": "ParameterList",
                "src": "8159:25:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4515,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 4506,
                        "name": "ElementaryTypeName",
                        "src": "8209:7:7"
                      }
                    ],
                    "id": 4507,
                    "name": "VariableDeclaration",
                    "src": "8209:7:7"
                  }
                ],
                "id": 4508,
                "name": "ParameterList",
                "src": "8208:9:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 4508
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "paramsHash",
                          "referencedDeclaration": 3884,
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct Controller.Scheme storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3901,
                                  "type": "mapping(address => struct Controller.Scheme storage ref)",
                                  "value": "schemes"
                                },
                                "id": 4509,
                                "name": "Identifier",
                                "src": "8235:7:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4502,
                                  "type": "address",
                                  "value": "_scheme"
                                },
                                "id": 4510,
                                "name": "Identifier",
                                "src": "8243:7:7"
                              }
                            ],
                            "id": 4511,
                            "name": "IndexAccess",
                            "src": "8235:16:7"
                          }
                        ],
                        "id": 4512,
                        "name": "MemberAccess",
                        "src": "8235:27:7"
                      }
                    ],
                    "id": 4513,
                    "name": "Return",
                    "src": "8228:34:7"
                  }
                ],
                "id": 4514,
                "name": "Block",
                "src": "8218:51:7"
              }
            ],
            "id": 4515,
            "name": "FunctionDefinition",
            "src": "8131:138:7"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getSchemePermissions",
              "payable": false,
              "scope": 4967,
              "stateMutability": "view",
              "superFunction": 5051,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_scheme",
                      "scope": 4530,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4516,
                        "name": "ElementaryTypeName",
                        "src": "8305:7:7"
                      }
                    ],
                    "id": 4517,
                    "name": "VariableDeclaration",
                    "src": "8305:15:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4530,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4518,
                        "name": "ElementaryTypeName",
                        "src": "8321:7:7"
                      }
                    ],
                    "id": 4519,
                    "name": "VariableDeclaration",
                    "src": "8321:7:7"
                  }
                ],
                "id": 4520,
                "name": "ParameterList",
                "src": "8304:25:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4530,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes4",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes4",
                          "type": "bytes4"
                        },
                        "id": 4521,
                        "name": "ElementaryTypeName",
                        "src": "8354:6:7"
                      }
                    ],
                    "id": 4522,
                    "name": "VariableDeclaration",
                    "src": "8354:6:7"
                  }
                ],
                "id": 4523,
                "name": "ParameterList",
                "src": "8353:8:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 4523
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "permissions",
                          "referencedDeclaration": 3886,
                          "type": "bytes4"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct Controller.Scheme storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3901,
                                  "type": "mapping(address => struct Controller.Scheme storage ref)",
                                  "value": "schemes"
                                },
                                "id": 4524,
                                "name": "Identifier",
                                "src": "8379:7:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4517,
                                  "type": "address",
                                  "value": "_scheme"
                                },
                                "id": 4525,
                                "name": "Identifier",
                                "src": "8387:7:7"
                              }
                            ],
                            "id": 4526,
                            "name": "IndexAccess",
                            "src": "8379:16:7"
                          }
                        ],
                        "id": 4527,
                        "name": "MemberAccess",
                        "src": "8379:28:7"
                      }
                    ],
                    "id": 4528,
                    "name": "Return",
                    "src": "8372:35:7"
                  }
                ],
                "id": 4529,
                "name": "Block",
                "src": "8362:52:7"
              }
            ],
            "id": 4530,
            "name": "FunctionDefinition",
            "src": "8275:139:7"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "globalConstraintsCount",
              "payable": false,
              "scope": 4967,
              "stateMutability": "view",
              "superFunction": 5058,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4541,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4531,
                        "name": "ElementaryTypeName",
                        "src": "8477:7:7"
                      }
                    ],
                    "id": 4532,
                    "name": "VariableDeclaration",
                    "src": "8477:7:7"
                  }
                ],
                "id": 4533,
                "name": "ParameterList",
                "src": "8476:9:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4541,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 4534,
                        "name": "ElementaryTypeName",
                        "src": "8510:4:7"
                      }
                    ],
                    "id": 4535,
                    "name": "VariableDeclaration",
                    "src": "8510:4:7"
                  }
                ],
                "id": 4536,
                "name": "ParameterList",
                "src": "8509:6:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 4536
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "length",
                          "referencedDeclaration": null,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3912,
                              "type": "struct Controller.GlobalConstraint storage ref[] storage ref",
                              "value": "globalConstraints"
                            },
                            "id": 4537,
                            "name": "Identifier",
                            "src": "8533:17:7"
                          }
                        ],
                        "id": 4538,
                        "name": "MemberAccess",
                        "src": "8533:24:7"
                      }
                    ],
                    "id": 4539,
                    "name": "Return",
                    "src": "8526:31:7"
                  }
                ],
                "id": 4540,
                "name": "Block",
                "src": "8516:48:7"
              }
            ],
            "id": 4541,
            "name": "FunctionDefinition",
            "src": "8445:119:7"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "isGlobalConstraintRegistered",
              "payable": false,
              "scope": 4967,
              "stateMutability": "view",
              "superFunction": 5067,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_globalConstraint",
                      "scope": 4556,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4542,
                        "name": "ElementaryTypeName",
                        "src": "8608:7:7"
                      }
                    ],
                    "id": 4543,
                    "name": "VariableDeclaration",
                    "src": "8608:25:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4556,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4544,
                        "name": "ElementaryTypeName",
                        "src": "8634:7:7"
                      }
                    ],
                    "id": 4545,
                    "name": "VariableDeclaration",
                    "src": "8634:7:7"
                  }
                ],
                "id": 4546,
                "name": "ParameterList",
                "src": "8607:35:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4556,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4547,
                        "name": "ElementaryTypeName",
                        "src": "8667:4:7"
                      }
                    ],
                    "id": 4548,
                    "name": "VariableDeclaration",
                    "src": "8667:4:7"
                  }
                ],
                "id": 4549,
                "name": "ParameterList",
                "src": "8666:6:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 4549
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "register",
                          "referencedDeclaration": 3894,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct Controller.GlobalConstraintRegister storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3916,
                                  "type": "mapping(address => struct Controller.GlobalConstraintRegister storage ref)",
                                  "value": "globalConstraintsRegister"
                                },
                                "id": 4550,
                                "name": "Identifier",
                                "src": "8690:25:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4543,
                                  "type": "address",
                                  "value": "_globalConstraint"
                                },
                                "id": 4551,
                                "name": "Identifier",
                                "src": "8716:17:7"
                              }
                            ],
                            "id": 4552,
                            "name": "IndexAccess",
                            "src": "8690:44:7"
                          }
                        ],
                        "id": 4553,
                        "name": "MemberAccess",
                        "src": "8690:53:7"
                      }
                    ],
                    "id": 4554,
                    "name": "Return",
                    "src": "8683:60:7"
                  }
                ],
                "id": 4555,
                "name": "Block",
                "src": "8673:77:7"
              }
            ],
            "id": 4556,
            "name": "FunctionDefinition",
            "src": "8570:180:7"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "addGlobalConstraint",
              "payable": false,
              "scope": 4967,
              "stateMutability": "nonpayable",
              "superFunction": 5078,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_globalConstraint",
                      "scope": 4616,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4557,
                        "name": "ElementaryTypeName",
                        "src": "9028:7:7"
                      }
                    ],
                    "id": 4558,
                    "name": "VariableDeclaration",
                    "src": "9028:25:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_params",
                      "scope": 4616,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 4559,
                        "name": "ElementaryTypeName",
                        "src": "9055:7:7"
                      }
                    ],
                    "id": 4560,
                    "name": "VariableDeclaration",
                    "src": "9055:15:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4616,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4561,
                        "name": "ElementaryTypeName",
                        "src": "9071:7:7"
                      }
                    ],
                    "id": 4562,
                    "name": "VariableDeclaration",
                    "src": "9071:7:7"
                  }
                ],
                "id": 4563,
                "name": "ParameterList",
                "src": "9027:52:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4616,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4566,
                        "name": "ElementaryTypeName",
                        "src": "9127:4:7"
                      }
                    ],
                    "id": 4567,
                    "name": "VariableDeclaration",
                    "src": "9127:4:7"
                  }
                ],
                "id": 4568,
                "name": "ParameterList",
                "src": "9126:6:7"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4122,
                      "type": "modifier ()",
                      "value": "onlyGlobalConstraintsScheme"
                    },
                    "id": 4564,
                    "name": "Identifier",
                    "src": "9091:27:7"
                  }
                ],
                "id": 4565,
                "name": "ModifierInvocation",
                "src": "9091:27:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!",
                          "prefix": true,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "register",
                              "referencedDeclaration": 3894,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct Controller.GlobalConstraintRegister storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3916,
                                      "type": "mapping(address => struct Controller.GlobalConstraintRegister storage ref)",
                                      "value": "globalConstraintsRegister"
                                    },
                                    "id": 4569,
                                    "name": "Identifier",
                                    "src": "9152:25:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4558,
                                      "type": "address",
                                      "value": "_globalConstraint"
                                    },
                                    "id": 4570,
                                    "name": "Identifier",
                                    "src": "9178:17:7"
                                  }
                                ],
                                "id": 4571,
                                "name": "IndexAccess",
                                "src": "9152:44:7"
                              }
                            ],
                            "id": 4572,
                            "name": "MemberAccess",
                            "src": "9152:53:7"
                          }
                        ],
                        "id": 4573,
                        "name": "UnaryOperation",
                        "src": "9151:54:7"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_struct$_GlobalConstraint_$3892_memory",
                                          "typeString": "struct Controller.GlobalConstraint memory"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "push",
                                      "referencedDeclaration": null,
                                      "type": "function (struct Controller.GlobalConstraint storage ref) returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3912,
                                          "type": "struct Controller.GlobalConstraint storage ref[] storage ref",
                                          "value": "globalConstraints"
                                        },
                                        "id": 4574,
                                        "name": "Identifier",
                                        "src": "9221:17:7"
                                      }
                                    ],
                                    "id": 4576,
                                    "name": "MemberAccess",
                                    "src": "9221:22:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": true,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "struct Controller.GlobalConstraint memory",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3892,
                                          "type": "type(struct Controller.GlobalConstraint storage pointer)",
                                          "value": "GlobalConstraint"
                                        },
                                        "id": 4577,
                                        "name": "Identifier",
                                        "src": "9244:16:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4558,
                                          "type": "address",
                                          "value": "_globalConstraint"
                                        },
                                        "id": 4578,
                                        "name": "Identifier",
                                        "src": "9261:17:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4560,
                                          "type": "bytes32",
                                          "value": "_params"
                                        },
                                        "id": 4579,
                                        "name": "Identifier",
                                        "src": "9279:7:7"
                                      }
                                    ],
                                    "id": 4580,
                                    "name": "FunctionCall",
                                    "src": "9244:43:7"
                                  }
                                ],
                                "id": 4581,
                                "name": "FunctionCall",
                                "src": "9221:67:7"
                              }
                            ],
                            "id": 4582,
                            "name": "ExpressionStatement",
                            "src": "9221:67:7"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "struct Controller.GlobalConstraintRegister storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "type": "struct Controller.GlobalConstraintRegister storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3916,
                                          "type": "mapping(address => struct Controller.GlobalConstraintRegister storage ref)",
                                          "value": "globalConstraintsRegister"
                                        },
                                        "id": 4583,
                                        "name": "Identifier",
                                        "src": "9302:25:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4558,
                                          "type": "address",
                                          "value": "_globalConstraint"
                                        },
                                        "id": 4584,
                                        "name": "Identifier",
                                        "src": "9328:17:7"
                                      }
                                    ],
                                    "id": 4585,
                                    "name": "IndexAccess",
                                    "src": "9302:44:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": true,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "struct Controller.GlobalConstraintRegister memory",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3897,
                                          "type": "type(struct Controller.GlobalConstraintRegister storage pointer)",
                                          "value": "GlobalConstraintRegister"
                                        },
                                        "id": 4586,
                                        "name": "Identifier",
                                        "src": "9349:24:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "74727565",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "true"
                                        },
                                        "id": 4587,
                                        "name": "Literal",
                                        "src": "9374:4:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "length",
                                              "referencedDeclaration": null,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3912,
                                                  "type": "struct Controller.GlobalConstraint storage ref[] storage ref",
                                                  "value": "globalConstraints"
                                                },
                                                "id": 4588,
                                                "name": "Identifier",
                                                "src": "9379:17:7"
                                              }
                                            ],
                                            "id": 4589,
                                            "name": "MemberAccess",
                                            "src": "9379:24:7"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "31",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 1",
                                              "value": "1"
                                            },
                                            "id": 4590,
                                            "name": "Literal",
                                            "src": "9404:1:7"
                                          }
                                        ],
                                        "id": 4591,
                                        "name": "BinaryOperation",
                                        "src": "9379:26:7"
                                      }
                                    ],
                                    "id": 4592,
                                    "name": "FunctionCall",
                                    "src": "9349:57:7"
                                  }
                                ],
                                "id": 4593,
                                "name": "Assignment",
                                "src": "9302:104:7"
                              }
                            ],
                            "id": 4594,
                            "name": "ExpressionStatement",
                            "src": "9302:104:7"
                          }
                        ],
                        "id": 4595,
                        "name": "Block",
                        "src": "9207:210:7"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "bytes32"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "params",
                                      "referencedDeclaration": 3891,
                                      "type": "bytes32"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct Controller.GlobalConstraint storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3912,
                                              "type": "struct Controller.GlobalConstraint storage ref[] storage ref",
                                              "value": "globalConstraints"
                                            },
                                            "id": 4596,
                                            "name": "Identifier",
                                            "src": "9436:17:7"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "index",
                                              "referencedDeclaration": 3896,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "struct Controller.GlobalConstraintRegister storage ref"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 3916,
                                                      "type": "mapping(address => struct Controller.GlobalConstraintRegister storage ref)",
                                                      "value": "globalConstraintsRegister"
                                                    },
                                                    "id": 4597,
                                                    "name": "Identifier",
                                                    "src": "9454:25:7"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 4558,
                                                      "type": "address",
                                                      "value": "_globalConstraint"
                                                    },
                                                    "id": 4598,
                                                    "name": "Identifier",
                                                    "src": "9480:17:7"
                                                  }
                                                ],
                                                "id": 4599,
                                                "name": "IndexAccess",
                                                "src": "9454:44:7"
                                              }
                                            ],
                                            "id": 4600,
                                            "name": "MemberAccess",
                                            "src": "9454:50:7"
                                          }
                                        ],
                                        "id": 4601,
                                        "name": "IndexAccess",
                                        "src": "9436:69:7"
                                      }
                                    ],
                                    "id": 4602,
                                    "name": "MemberAccess",
                                    "src": "9436:76:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4560,
                                      "type": "bytes32",
                                      "value": "_params"
                                    },
                                    "id": 4603,
                                    "name": "Identifier",
                                    "src": "9515:7:7"
                                  }
                                ],
                                "id": 4604,
                                "name": "Assignment",
                                "src": "9436:86:7"
                              }
                            ],
                            "id": 4605,
                            "name": "ExpressionStatement",
                            "src": "9436:86:7"
                          }
                        ],
                        "id": 4606,
                        "name": "Block",
                        "src": "9422:111:7"
                      }
                    ],
                    "id": 4607,
                    "name": "IfStatement",
                    "src": "9147:386:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4007,
                              "type": "function (address,bytes32)",
                              "value": "AddGlobalConstraint"
                            },
                            "id": 4608,
                            "name": "Identifier",
                            "src": "9542:19:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4558,
                              "type": "address",
                              "value": "_globalConstraint"
                            },
                            "id": 4609,
                            "name": "Identifier",
                            "src": "9562:17:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4560,
                              "type": "bytes32",
                              "value": "_params"
                            },
                            "id": 4610,
                            "name": "Identifier",
                            "src": "9581:7:7"
                          }
                        ],
                        "id": 4611,
                        "name": "FunctionCall",
                        "src": "9542:47:7"
                      }
                    ],
                    "id": 4612,
                    "name": "ExpressionStatement",
                    "src": "9542:47:7"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 4568
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 4613,
                        "name": "Literal",
                        "src": "9606:4:7"
                      }
                    ],
                    "id": 4614,
                    "name": "Return",
                    "src": "9599:11:7"
                  }
                ],
                "id": 4615,
                "name": "Block",
                "src": "9137:480:7"
              }
            ],
            "id": 4616,
            "name": "FunctionDefinition",
            "src": "8999:618:7"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "removeGlobalConstraint",
              "payable": false,
              "scope": 4967,
              "stateMutability": "nonpayable",
              "superFunction": 5087,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_globalConstraint",
                      "scope": 4692,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4617,
                        "name": "ElementaryTypeName",
                        "src": "9839:7:7"
                      }
                    ],
                    "id": 4618,
                    "name": "VariableDeclaration",
                    "src": "9839:25:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4692,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4619,
                        "name": "ElementaryTypeName",
                        "src": "9865:7:7"
                      }
                    ],
                    "id": 4620,
                    "name": "VariableDeclaration",
                    "src": "9865:7:7"
                  }
                ],
                "id": 4621,
                "name": "ParameterList",
                "src": "9838:35:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4692,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4624,
                        "name": "ElementaryTypeName",
                        "src": "9921:4:7"
                      }
                    ],
                    "id": 4625,
                    "name": "VariableDeclaration",
                    "src": "9921:4:7"
                  }
                ],
                "id": 4626,
                "name": "ParameterList",
                "src": "9920:6:7"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4122,
                      "type": "modifier ()",
                      "value": "onlyGlobalConstraintsScheme"
                    },
                    "id": 4622,
                    "name": "Identifier",
                    "src": "9885:27:7"
                  }
                ],
                "id": 4623,
                "name": "ModifierInvocation",
                "src": "9885:27:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        4628
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "globalConstraintRegister",
                          "scope": 4692,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct Controller.GlobalConstraintRegister memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "GlobalConstraintRegister",
                              "referencedDeclaration": 3897,
                              "type": "struct Controller.GlobalConstraintRegister storage pointer"
                            },
                            "id": 4627,
                            "name": "UserDefinedTypeName",
                            "src": "9941:24:7"
                          }
                        ],
                        "id": 4628,
                        "name": "VariableDeclaration",
                        "src": "9941:56:7"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Controller.GlobalConstraintRegister storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3916,
                              "type": "mapping(address => struct Controller.GlobalConstraintRegister storage ref)",
                              "value": "globalConstraintsRegister"
                            },
                            "id": 4629,
                            "name": "Identifier",
                            "src": "10000:25:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4618,
                              "type": "address",
                              "value": "_globalConstraint"
                            },
                            "id": 4630,
                            "name": "Identifier",
                            "src": "10026:17:7"
                          }
                        ],
                        "id": 4631,
                        "name": "IndexAccess",
                        "src": "10000:44:7"
                      }
                    ],
                    "id": 4632,
                    "name": "VariableDeclarationStatement",
                    "src": "9941:103:7"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "register",
                          "referencedDeclaration": 3894,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4628,
                              "type": "struct Controller.GlobalConstraintRegister memory",
                              "value": "globalConstraintRegister"
                            },
                            "id": 4633,
                            "name": "Identifier",
                            "src": "10059:24:7"
                          }
                        ],
                        "id": 4634,
                        "name": "MemberAccess",
                        "src": "10059:33:7"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "index",
                                      "referencedDeclaration": 3896,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4628,
                                          "type": "struct Controller.GlobalConstraintRegister memory",
                                          "value": "globalConstraintRegister"
                                        },
                                        "id": 4635,
                                        "name": "Identifier",
                                        "src": "10112:24:7"
                                      }
                                    ],
                                    "id": 4636,
                                    "name": "MemberAccess",
                                    "src": "10112:30:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "length",
                                          "referencedDeclaration": null,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3912,
                                              "type": "struct Controller.GlobalConstraint storage ref[] storage ref",
                                              "value": "globalConstraints"
                                            },
                                            "id": 4637,
                                            "name": "Identifier",
                                            "src": "10145:17:7"
                                          }
                                        ],
                                        "id": 4638,
                                        "name": "MemberAccess",
                                        "src": "10145:24:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 4639,
                                        "name": "Literal",
                                        "src": "10170:1:7"
                                      }
                                    ],
                                    "id": 4640,
                                    "name": "BinaryOperation",
                                    "src": "10145:26:7"
                                  }
                                ],
                                "id": 4641,
                                "name": "BinaryOperation",
                                "src": "10112:59:7"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "assignments": [
                                        4643
                                      ]
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "constant": false,
                                          "name": "globalConstraint",
                                          "scope": 4692,
                                          "stateVariable": false,
                                          "storageLocation": "memory",
                                          "type": "struct Controller.GlobalConstraint memory",
                                          "value": null,
                                          "visibility": "internal"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "contractScope": null,
                                              "name": "GlobalConstraint",
                                              "referencedDeclaration": 3892,
                                              "type": "struct Controller.GlobalConstraint storage pointer"
                                            },
                                            "id": 4642,
                                            "name": "UserDefinedTypeName",
                                            "src": "10191:16:7"
                                          }
                                        ],
                                        "id": 4643,
                                        "name": "VariableDeclaration",
                                        "src": "10191:40:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct Controller.GlobalConstraint storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3912,
                                              "type": "struct Controller.GlobalConstraint storage ref[] storage ref",
                                              "value": "globalConstraints"
                                            },
                                            "id": 4644,
                                            "name": "Identifier",
                                            "src": "10234:17:7"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "-",
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "length",
                                                  "referencedDeclaration": null,
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 3912,
                                                      "type": "struct Controller.GlobalConstraint storage ref[] storage ref",
                                                      "value": "globalConstraints"
                                                    },
                                                    "id": 4645,
                                                    "name": "Identifier",
                                                    "src": "10252:17:7"
                                                  }
                                                ],
                                                "id": 4646,
                                                "name": "MemberAccess",
                                                "src": "10252:24:7"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "31",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 1",
                                                  "value": "1"
                                                },
                                                "id": 4647,
                                                "name": "Literal",
                                                "src": "10277:1:7"
                                              }
                                            ],
                                            "id": 4648,
                                            "name": "BinaryOperation",
                                            "src": "10252:26:7"
                                          }
                                        ],
                                        "id": 4649,
                                        "name": "IndexAccess",
                                        "src": "10234:45:7"
                                      }
                                    ],
                                    "id": 4650,
                                    "name": "VariableDeclarationStatement",
                                    "src": "10191:88:7"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "struct Controller.GlobalConstraint storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "type": "struct Controller.GlobalConstraint storage ref"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3912,
                                                  "type": "struct Controller.GlobalConstraint storage ref[] storage ref",
                                                  "value": "globalConstraints"
                                                },
                                                "id": 4651,
                                                "name": "Identifier",
                                                "src": "10297:17:7"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "index",
                                                  "referencedDeclaration": 3896,
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 4628,
                                                      "type": "struct Controller.GlobalConstraintRegister memory",
                                                      "value": "globalConstraintRegister"
                                                    },
                                                    "id": 4652,
                                                    "name": "Identifier",
                                                    "src": "10315:24:7"
                                                  }
                                                ],
                                                "id": 4653,
                                                "name": "MemberAccess",
                                                "src": "10315:30:7"
                                              }
                                            ],
                                            "id": 4654,
                                            "name": "IndexAccess",
                                            "src": "10297:49:7"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4643,
                                              "type": "struct Controller.GlobalConstraint memory",
                                              "value": "globalConstraint"
                                            },
                                            "id": 4655,
                                            "name": "Identifier",
                                            "src": "10349:16:7"
                                          }
                                        ],
                                        "id": 4656,
                                        "name": "Assignment",
                                        "src": "10297:68:7"
                                      }
                                    ],
                                    "id": 4657,
                                    "name": "ExpressionStatement",
                                    "src": "10297:68:7"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "index",
                                              "referencedDeclaration": 3896,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "struct Controller.GlobalConstraintRegister storage ref"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 3916,
                                                      "type": "mapping(address => struct Controller.GlobalConstraintRegister storage ref)",
                                                      "value": "globalConstraintsRegister"
                                                    },
                                                    "id": 4658,
                                                    "name": "Identifier",
                                                    "src": "10383:25:7"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "gcAddress",
                                                      "referencedDeclaration": 3889,
                                                      "type": "address"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 4643,
                                                          "type": "struct Controller.GlobalConstraint memory",
                                                          "value": "globalConstraint"
                                                        },
                                                        "id": 4659,
                                                        "name": "Identifier",
                                                        "src": "10409:16:7"
                                                      }
                                                    ],
                                                    "id": 4660,
                                                    "name": "MemberAccess",
                                                    "src": "10409:26:7"
                                                  }
                                                ],
                                                "id": 4661,
                                                "name": "IndexAccess",
                                                "src": "10383:53:7"
                                              }
                                            ],
                                            "id": 4662,
                                            "name": "MemberAccess",
                                            "src": "10383:59:7"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "index",
                                              "referencedDeclaration": 3896,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 4628,
                                                  "type": "struct Controller.GlobalConstraintRegister memory",
                                                  "value": "globalConstraintRegister"
                                                },
                                                "id": 4663,
                                                "name": "Identifier",
                                                "src": "10445:24:7"
                                              }
                                            ],
                                            "id": 4664,
                                            "name": "MemberAccess",
                                            "src": "10445:30:7"
                                          }
                                        ],
                                        "id": 4665,
                                        "name": "Assignment",
                                        "src": "10383:92:7"
                                      }
                                    ],
                                    "id": 4666,
                                    "name": "ExpressionStatement",
                                    "src": "10383:92:7"
                                  }
                                ],
                                "id": 4667,
                                "name": "Block",
                                "src": "10173:317:7"
                              }
                            ],
                            "id": 4668,
                            "name": "IfStatement",
                            "src": "10108:382:7"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "--",
                                  "prefix": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "length",
                                      "referencedDeclaration": null,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3912,
                                          "type": "struct Controller.GlobalConstraint storage ref[] storage ref",
                                          "value": "globalConstraints"
                                        },
                                        "id": 4669,
                                        "name": "Identifier",
                                        "src": "10503:17:7"
                                      }
                                    ],
                                    "id": 4671,
                                    "name": "MemberAccess",
                                    "src": "10503:24:7"
                                  }
                                ],
                                "id": 4672,
                                "name": "UnaryOperation",
                                "src": "10503:26:7"
                              }
                            ],
                            "id": 4673,
                            "name": "ExpressionStatement",
                            "src": "10503:26:7"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "delete",
                                  "prefix": true,
                                  "type": "tuple()"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "type": "struct Controller.GlobalConstraintRegister storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3916,
                                          "type": "mapping(address => struct Controller.GlobalConstraintRegister storage ref)",
                                          "value": "globalConstraintsRegister"
                                        },
                                        "id": 4674,
                                        "name": "Identifier",
                                        "src": "10550:25:7"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4618,
                                          "type": "address",
                                          "value": "_globalConstraint"
                                        },
                                        "id": 4675,
                                        "name": "Identifier",
                                        "src": "10576:17:7"
                                      }
                                    ],
                                    "id": 4676,
                                    "name": "IndexAccess",
                                    "src": "10550:44:7"
                                  }
                                ],
                                "id": 4677,
                                "name": "UnaryOperation",
                                "src": "10543:51:7"
                              }
                            ],
                            "id": 4678,
                            "name": "ExpressionStatement",
                            "src": "10543:51:7"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4013,
                                      "type": "function (address,uint256)",
                                      "value": "RemoveGlobalConstraint"
                                    },
                                    "id": 4679,
                                    "name": "Identifier",
                                    "src": "10608:22:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4618,
                                      "type": "address",
                                      "value": "_globalConstraint"
                                    },
                                    "id": 4680,
                                    "name": "Identifier",
                                    "src": "10631:17:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "index",
                                      "referencedDeclaration": 3896,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4628,
                                          "type": "struct Controller.GlobalConstraintRegister memory",
                                          "value": "globalConstraintRegister"
                                        },
                                        "id": 4681,
                                        "name": "Identifier",
                                        "src": "10649:24:7"
                                      }
                                    ],
                                    "id": 4682,
                                    "name": "MemberAccess",
                                    "src": "10649:30:7"
                                  }
                                ],
                                "id": 4683,
                                "name": "FunctionCall",
                                "src": "10608:72:7"
                              }
                            ],
                            "id": 4684,
                            "name": "ExpressionStatement",
                            "src": "10608:72:7"
                          },
                          {
                            "attributes": {
                              "functionReturnParameters": 4626
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "74727565",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "true"
                                },
                                "id": 4685,
                                "name": "Literal",
                                "src": "10701:4:7"
                              }
                            ],
                            "id": 4686,
                            "name": "Return",
                            "src": "10694:11:7"
                          }
                        ],
                        "id": 4687,
                        "name": "Block",
                        "src": "10094:622:7"
                      }
                    ],
                    "id": 4688,
                    "name": "IfStatement",
                    "src": "10055:661:7"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 4626
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "66616c7365",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "false"
                        },
                        "id": 4689,
                        "name": "Literal",
                        "src": "10732:5:7"
                      }
                    ],
                    "id": 4690,
                    "name": "Return",
                    "src": "10725:12:7"
                  }
                ],
                "id": 4691,
                "name": "Block",
                "src": "9931:813:7"
              }
            ],
            "id": 4692,
            "name": "FunctionDefinition",
            "src": "9806:938:7"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "upgradeController",
              "payable": false,
              "scope": 4967,
              "stateMutability": "nonpayable",
              "superFunction": 5096,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_newController",
                      "scope": 4767,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4693,
                        "name": "ElementaryTypeName",
                        "src": "11001:7:7"
                      }
                    ],
                    "id": 4694,
                    "name": "VariableDeclaration",
                    "src": "11001:22:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4767,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4695,
                        "name": "ElementaryTypeName",
                        "src": "11024:7:7"
                      }
                    ],
                    "id": 4696,
                    "name": "VariableDeclaration",
                    "src": "11024:7:7"
                  }
                ],
                "id": 4697,
                "name": "ParameterList",
                "src": "11000:32:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4767,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4700,
                        "name": "ElementaryTypeName",
                        "src": "11072:4:7"
                      }
                    ],
                    "id": 4701,
                    "name": "VariableDeclaration",
                    "src": "11072:4:7"
                  }
                ],
                "id": 4702,
                "name": "ParameterList",
                "src": "11071:6:7"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4142,
                      "type": "modifier ()",
                      "value": "onlyUpgradingScheme"
                    },
                    "id": 4698,
                    "name": "Identifier",
                    "src": "11044:19:7"
                  }
                ],
                "id": 4699,
                "name": "ModifierInvocation",
                "src": "11044:19:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 4703,
                            "name": "Identifier",
                            "src": "11092:7:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3909,
                                  "type": "address",
                                  "value": "newController"
                                },
                                "id": 4704,
                                "name": "Identifier",
                                "src": "11100:13:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 4705,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "11117:7:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 4706,
                                    "name": "Literal",
                                    "src": "11125:1:7"
                                  }
                                ],
                                "id": 4707,
                                "name": "FunctionCall",
                                "src": "11117:10:7"
                              }
                            ],
                            "id": 4708,
                            "name": "BinaryOperation",
                            "src": "11100:27:7"
                          }
                        ],
                        "id": 4709,
                        "name": "FunctionCall",
                        "src": "11092:36:7"
                      }
                    ],
                    "id": 4710,
                    "name": "ExpressionStatement",
                    "src": "11092:36:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 4711,
                            "name": "Identifier",
                            "src": "11193:7:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4694,
                                  "type": "address",
                                  "value": "_newController"
                                },
                                "id": 4712,
                                "name": "Identifier",
                                "src": "11201:14:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 4713,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "11219:7:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 4714,
                                    "name": "Literal",
                                    "src": "11227:1:7"
                                  }
                                ],
                                "id": 4715,
                                "name": "FunctionCall",
                                "src": "11219:10:7"
                              }
                            ],
                            "id": 4716,
                            "name": "BinaryOperation",
                            "src": "11201:28:7"
                          }
                        ],
                        "id": 4717,
                        "name": "FunctionCall",
                        "src": "11193:37:7"
                      }
                    ],
                    "id": 4718,
                    "name": "ExpressionStatement",
                    "src": "11193:37:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3909,
                              "type": "address",
                              "value": "newController"
                            },
                            "id": 4719,
                            "name": "Identifier",
                            "src": "11240:13:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4694,
                              "type": "address",
                              "value": "_newController"
                            },
                            "id": 4720,
                            "name": "Identifier",
                            "src": "11256:14:7"
                          }
                        ],
                        "id": 4721,
                        "name": "Assignment",
                        "src": "11240:30:7"
                      }
                    ],
                    "id": 4722,
                    "name": "ExpressionStatement",
                    "src": "11240:30:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "transferOwnership",
                              "referencedDeclaration": 11444,
                              "type": "function (address) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3903,
                                  "type": "contract Avatar",
                                  "value": "avatar"
                                },
                                "id": 4723,
                                "name": "Identifier",
                                "src": "11280:6:7"
                              }
                            ],
                            "id": 4725,
                            "name": "MemberAccess",
                            "src": "11280:24:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4694,
                              "type": "address",
                              "value": "_newController"
                            },
                            "id": 4726,
                            "name": "Identifier",
                            "src": "11305:14:7"
                          }
                        ],
                        "id": 4727,
                        "name": "FunctionCall",
                        "src": "11280:40:7"
                      }
                    ],
                    "id": 4728,
                    "name": "ExpressionStatement",
                    "src": "11280:40:7"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "owner",
                                  "referencedDeclaration": 11393,
                                  "type": "function () view external returns (address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3905,
                                      "type": "contract DAOToken",
                                      "value": "nativeToken"
                                    },
                                    "id": 4729,
                                    "name": "Identifier",
                                    "src": "11334:11:7"
                                  }
                                ],
                                "id": 4730,
                                "name": "MemberAccess",
                                "src": "11334:17:7"
                              }
                            ],
                            "id": 4731,
                            "name": "FunctionCall",
                            "src": "11334:19:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_Controller_$4967",
                                      "typeString": "contract Controller"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 4732,
                                "name": "ElementaryTypeNameExpression",
                                "src": "11357:7:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12054,
                                  "type": "contract Controller",
                                  "value": "this"
                                },
                                "id": 4733,
                                "name": "Identifier",
                                "src": "11365:4:7"
                              }
                            ],
                            "id": 4734,
                            "name": "FunctionCall",
                            "src": "11357:13:7"
                          }
                        ],
                        "id": 4735,
                        "name": "BinaryOperation",
                        "src": "11334:36:7"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "transferOwnership",
                                      "referencedDeclaration": 11444,
                                      "type": "function (address) external"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3905,
                                          "type": "contract DAOToken",
                                          "value": "nativeToken"
                                        },
                                        "id": 4736,
                                        "name": "Identifier",
                                        "src": "11386:11:7"
                                      }
                                    ],
                                    "id": 4738,
                                    "name": "MemberAccess",
                                    "src": "11386:29:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4694,
                                      "type": "address",
                                      "value": "_newController"
                                    },
                                    "id": 4739,
                                    "name": "Identifier",
                                    "src": "11416:14:7"
                                  }
                                ],
                                "id": 4740,
                                "name": "FunctionCall",
                                "src": "11386:45:7"
                              }
                            ],
                            "id": 4741,
                            "name": "ExpressionStatement",
                            "src": "11386:45:7"
                          }
                        ],
                        "id": 4742,
                        "name": "Block",
                        "src": "11372:70:7"
                      }
                    ],
                    "id": 4743,
                    "name": "IfStatement",
                    "src": "11330:112:7"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "owner",
                                  "referencedDeclaration": 11393,
                                  "type": "function () view external returns (address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3907,
                                      "type": "contract Reputation",
                                      "value": "nativeReputation"
                                    },
                                    "id": 4744,
                                    "name": "Identifier",
                                    "src": "11455:16:7"
                                  }
                                ],
                                "id": 4745,
                                "name": "MemberAccess",
                                "src": "11455:22:7"
                              }
                            ],
                            "id": 4746,
                            "name": "FunctionCall",
                            "src": "11455:24:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_Controller_$4967",
                                      "typeString": "contract Controller"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 4747,
                                "name": "ElementaryTypeNameExpression",
                                "src": "11483:7:7"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12054,
                                  "type": "contract Controller",
                                  "value": "this"
                                },
                                "id": 4748,
                                "name": "Identifier",
                                "src": "11491:4:7"
                              }
                            ],
                            "id": 4749,
                            "name": "FunctionCall",
                            "src": "11483:13:7"
                          }
                        ],
                        "id": 4750,
                        "name": "BinaryOperation",
                        "src": "11455:41:7"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "transferOwnership",
                                      "referencedDeclaration": 11444,
                                      "type": "function (address) external"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3907,
                                          "type": "contract Reputation",
                                          "value": "nativeReputation"
                                        },
                                        "id": 4751,
                                        "name": "Identifier",
                                        "src": "11512:16:7"
                                      }
                                    ],
                                    "id": 4753,
                                    "name": "MemberAccess",
                                    "src": "11512:34:7"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4694,
                                      "type": "address",
                                      "value": "_newController"
                                    },
                                    "id": 4754,
                                    "name": "Identifier",
                                    "src": "11547:14:7"
                                  }
                                ],
                                "id": 4755,
                                "name": "FunctionCall",
                                "src": "11512:50:7"
                              }
                            ],
                            "id": 4756,
                            "name": "ExpressionStatement",
                            "src": "11512:50:7"
                          }
                        ],
                        "id": 4757,
                        "name": "Block",
                        "src": "11498:75:7"
                      }
                    ],
                    "id": 4758,
                    "name": "IfStatement",
                    "src": "11451:122:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Controller_$4967",
                                  "typeString": "contract Controller"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4019,
                              "type": "function (address,address)",
                              "value": "UpgradeController"
                            },
                            "id": 4759,
                            "name": "Identifier",
                            "src": "11582:17:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12054,
                              "type": "contract Controller",
                              "value": "this"
                            },
                            "id": 4760,
                            "name": "Identifier",
                            "src": "11600:4:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3909,
                              "type": "address",
                              "value": "newController"
                            },
                            "id": 4761,
                            "name": "Identifier",
                            "src": "11605:13:7"
                          }
                        ],
                        "id": 4762,
                        "name": "FunctionCall",
                        "src": "11582:37:7"
                      }
                    ],
                    "id": 4763,
                    "name": "ExpressionStatement",
                    "src": "11582:37:7"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 4702
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 4764,
                        "name": "Literal",
                        "src": "11636:4:7"
                      }
                    ],
                    "id": 4765,
                    "name": "Return",
                    "src": "11629:11:7"
                  }
                ],
                "id": 4766,
                "name": "Block",
                "src": "11082:565:7"
              }
            ],
            "id": 4767,
            "name": "FunctionDefinition",
            "src": "10974:673:7"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "genericAction",
              "payable": false,
              "scope": 4967,
              "stateMutability": "nonpayable",
              "superFunction": 5106,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_params",
                      "scope": 4796,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32[] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "bytes32[] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 4768,
                            "name": "ElementaryTypeName",
                            "src": "12010:7:7"
                          }
                        ],
                        "id": 4769,
                        "name": "ArrayTypeName",
                        "src": "12010:9:7"
                      }
                    ],
                    "id": 4770,
                    "name": "VariableDeclaration",
                    "src": "12010:17:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4796,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4771,
                        "name": "ElementaryTypeName",
                        "src": "12028:7:7"
                      }
                    ],
                    "id": 4772,
                    "name": "VariableDeclaration",
                    "src": "12028:7:7"
                  }
                ],
                "id": 4773,
                "name": "ParameterList",
                "src": "12009:27:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4796,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4779,
                        "name": "ElementaryTypeName",
                        "src": "12130:4:7"
                      }
                    ],
                    "id": 4780,
                    "name": "VariableDeclaration",
                    "src": "12130:4:7"
                  }
                ],
                "id": 4781,
                "name": "ParameterList",
                "src": "12129:6:7"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4082,
                      "type": "modifier ()",
                      "value": "onlyRegisteredScheme"
                    },
                    "id": 4774,
                    "name": "Identifier",
                    "src": "12052:20:7"
                  }
                ],
                "id": 4775,
                "name": "ModifierInvocation",
                "src": "12052:20:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4215,
                      "type": "modifier (bytes32)",
                      "value": "onlySubjectToConstraint"
                    },
                    "id": 4776,
                    "name": "Identifier",
                    "src": "12077:23:7"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "67656e65726963416374696f6e",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"genericAction\"",
                      "value": "genericAction"
                    },
                    "id": 4777,
                    "name": "Literal",
                    "src": "12101:15:7"
                  }
                ],
                "id": 4778,
                "name": "ModifierInvocation",
                "src": "12077:40:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3951,
                              "type": "function (address,bytes32[] memory)",
                              "value": "GenericAction"
                            },
                            "id": 4782,
                            "name": "Identifier",
                            "src": "12150:13:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 4783,
                                "name": "Identifier",
                                "src": "12164:3:7"
                              }
                            ],
                            "id": 4784,
                            "name": "MemberAccess",
                            "src": "12164:10:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4770,
                              "type": "bytes32[] memory",
                              "value": "_params"
                            },
                            "id": 4785,
                            "name": "Identifier",
                            "src": "12176:7:7"
                          }
                        ],
                        "id": 4786,
                        "name": "FunctionCall",
                        "src": "12150:34:7"
                      }
                    ],
                    "id": 4787,
                    "name": "ExpressionStatement",
                    "src": "12150:34:7"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 4781
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "genericAction",
                              "referencedDeclaration": 3727,
                              "type": "function (address,bytes32[] memory) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3903,
                                  "type": "contract Avatar",
                                  "value": "avatar"
                                },
                                "id": 4788,
                                "name": "Identifier",
                                "src": "12201:6:7"
                              }
                            ],
                            "id": 4789,
                            "name": "MemberAccess",
                            "src": "12201:20:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 4790,
                                "name": "Identifier",
                                "src": "12222:3:7"
                              }
                            ],
                            "id": 4791,
                            "name": "MemberAccess",
                            "src": "12222:10:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4770,
                              "type": "bytes32[] memory",
                              "value": "_params"
                            },
                            "id": 4792,
                            "name": "Identifier",
                            "src": "12234:7:7"
                          }
                        ],
                        "id": 4793,
                        "name": "FunctionCall",
                        "src": "12201:41:7"
                      }
                    ],
                    "id": 4794,
                    "name": "Return",
                    "src": "12194:48:7"
                  }
                ],
                "id": 4795,
                "name": "Block",
                "src": "12140:109:7"
              }
            ],
            "id": 4796,
            "name": "FunctionDefinition",
            "src": "11987:262:7"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "sendEther",
              "payable": false,
              "scope": 4967,
              "stateMutability": "nonpayable",
              "superFunction": 5117,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amountInWei",
                      "scope": 4826,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 4797,
                        "name": "ElementaryTypeName",
                        "src": "12462:4:7"
                      }
                    ],
                    "id": 4798,
                    "name": "VariableDeclaration",
                    "src": "12462:17:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_to",
                      "scope": 4826,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4799,
                        "name": "ElementaryTypeName",
                        "src": "12481:7:7"
                      }
                    ],
                    "id": 4800,
                    "name": "VariableDeclaration",
                    "src": "12481:11:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4826,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4801,
                        "name": "ElementaryTypeName",
                        "src": "12493:7:7"
                      }
                    ],
                    "id": 4802,
                    "name": "VariableDeclaration",
                    "src": "12493:7:7"
                  }
                ],
                "id": 4803,
                "name": "ParameterList",
                "src": "12461:40:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4826,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4809,
                        "name": "ElementaryTypeName",
                        "src": "12591:4:7"
                      }
                    ],
                    "id": 4810,
                    "name": "VariableDeclaration",
                    "src": "12591:4:7"
                  }
                ],
                "id": 4811,
                "name": "ParameterList",
                "src": "12590:6:7"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4082,
                      "type": "modifier ()",
                      "value": "onlyRegisteredScheme"
                    },
                    "id": 4804,
                    "name": "Identifier",
                    "src": "12517:20:7"
                  }
                ],
                "id": 4805,
                "name": "ModifierInvocation",
                "src": "12517:20:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4215,
                      "type": "modifier (bytes32)",
                      "value": "onlySubjectToConstraint"
                    },
                    "id": 4806,
                    "name": "Identifier",
                    "src": "12542:23:7"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "73656e644574686572",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"sendEther\"",
                      "value": "sendEther"
                    },
                    "id": 4807,
                    "name": "Literal",
                    "src": "12566:11:7"
                  }
                ],
                "id": 4808,
                "name": "ModifierInvocation",
                "src": "12542:36:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3959,
                              "type": "function (address,uint256,address)",
                              "value": "SendEther"
                            },
                            "id": 4812,
                            "name": "Identifier",
                            "src": "12611:9:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 4813,
                                "name": "Identifier",
                                "src": "12621:3:7"
                              }
                            ],
                            "id": 4814,
                            "name": "MemberAccess",
                            "src": "12621:10:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4798,
                              "type": "uint256",
                              "value": "_amountInWei"
                            },
                            "id": 4815,
                            "name": "Identifier",
                            "src": "12633:12:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4800,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 4816,
                            "name": "Identifier",
                            "src": "12647:3:7"
                          }
                        ],
                        "id": 4817,
                        "name": "FunctionCall",
                        "src": "12611:40:7"
                      }
                    ],
                    "id": 4818,
                    "name": "ExpressionStatement",
                    "src": "12611:40:7"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 4811
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sendEther",
                              "referencedDeclaration": 3752,
                              "type": "function (uint256,address) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3903,
                                  "type": "contract Avatar",
                                  "value": "avatar"
                                },
                                "id": 4819,
                                "name": "Identifier",
                                "src": "12668:6:7"
                              }
                            ],
                            "id": 4820,
                            "name": "MemberAccess",
                            "src": "12668:16:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4798,
                              "type": "uint256",
                              "value": "_amountInWei"
                            },
                            "id": 4821,
                            "name": "Identifier",
                            "src": "12685:12:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4800,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 4822,
                            "name": "Identifier",
                            "src": "12699:3:7"
                          }
                        ],
                        "id": 4823,
                        "name": "FunctionCall",
                        "src": "12668:35:7"
                      }
                    ],
                    "id": 4824,
                    "name": "Return",
                    "src": "12661:42:7"
                  }
                ],
                "id": 4825,
                "name": "Block",
                "src": "12601:109:7"
              }
            ],
            "id": 4826,
            "name": "FunctionDefinition",
            "src": "12443:267:7"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "externalTokenTransfer",
              "payable": false,
              "scope": 4967,
              "stateMutability": "nonpayable",
              "superFunction": 5130,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_externalToken",
                      "scope": 4860,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 11999,
                          "type": "contract StandardToken"
                        },
                        "id": 4827,
                        "name": "UserDefinedTypeName",
                        "src": "13025:13:7"
                      }
                    ],
                    "id": 4828,
                    "name": "VariableDeclaration",
                    "src": "13025:28:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_to",
                      "scope": 4860,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4829,
                        "name": "ElementaryTypeName",
                        "src": "13055:7:7"
                      }
                    ],
                    "id": 4830,
                    "name": "VariableDeclaration",
                    "src": "13055:11:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_value",
                      "scope": 4860,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 4831,
                        "name": "ElementaryTypeName",
                        "src": "13068:4:7"
                      }
                    ],
                    "id": 4832,
                    "name": "VariableDeclaration",
                    "src": "13068:11:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4860,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4833,
                        "name": "ElementaryTypeName",
                        "src": "13080:7:7"
                      }
                    ],
                    "id": 4834,
                    "name": "VariableDeclaration",
                    "src": "13080:7:7"
                  }
                ],
                "id": 4835,
                "name": "ParameterList",
                "src": "13024:64:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4860,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4841,
                        "name": "ElementaryTypeName",
                        "src": "13190:4:7"
                      }
                    ],
                    "id": 4842,
                    "name": "VariableDeclaration",
                    "src": "13190:4:7"
                  }
                ],
                "id": 4843,
                "name": "ParameterList",
                "src": "13189:6:7"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4082,
                      "type": "modifier ()",
                      "value": "onlyRegisteredScheme"
                    },
                    "id": 4836,
                    "name": "Identifier",
                    "src": "13104:20:7"
                  }
                ],
                "id": 4837,
                "name": "ModifierInvocation",
                "src": "13104:20:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4215,
                      "type": "modifier (bytes32)",
                      "value": "onlySubjectToConstraint"
                    },
                    "id": 4838,
                    "name": "Identifier",
                    "src": "13129:23:7"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "65787465726e616c546f6b656e5472616e73666572",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"externalTokenTransfer\"",
                      "value": "externalTokenTransfer"
                    },
                    "id": 4839,
                    "name": "Literal",
                    "src": "13153:23:7"
                  }
                ],
                "id": 4840,
                "name": "ModifierInvocation",
                "src": "13129:48:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_contract$_StandardToken_$11999",
                                  "typeString": "contract StandardToken"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3969,
                              "type": "function (address,address,address,uint256)",
                              "value": "ExternalTokenTransfer"
                            },
                            "id": 4844,
                            "name": "Identifier",
                            "src": "13210:21:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 4845,
                                "name": "Identifier",
                                "src": "13232:3:7"
                              }
                            ],
                            "id": 4846,
                            "name": "MemberAccess",
                            "src": "13232:10:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4828,
                              "type": "contract StandardToken",
                              "value": "_externalToken"
                            },
                            "id": 4847,
                            "name": "Identifier",
                            "src": "13244:14:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4830,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 4848,
                            "name": "Identifier",
                            "src": "13260:3:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4832,
                              "type": "uint256",
                              "value": "_value"
                            },
                            "id": 4849,
                            "name": "Identifier",
                            "src": "13265:6:7"
                          }
                        ],
                        "id": 4850,
                        "name": "FunctionCall",
                        "src": "13210:62:7"
                      }
                    ],
                    "id": 4851,
                    "name": "ExpressionStatement",
                    "src": "13210:62:7"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 4843
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_StandardToken_$11999",
                                  "typeString": "contract StandardToken"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "externalTokenTransfer",
                              "referencedDeclaration": 3781,
                              "type": "function (contract StandardToken,address,uint256) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3903,
                                  "type": "contract Avatar",
                                  "value": "avatar"
                                },
                                "id": 4852,
                                "name": "Identifier",
                                "src": "13289:6:7"
                              }
                            ],
                            "id": 4853,
                            "name": "MemberAccess",
                            "src": "13289:28:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4828,
                              "type": "contract StandardToken",
                              "value": "_externalToken"
                            },
                            "id": 4854,
                            "name": "Identifier",
                            "src": "13318:14:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4830,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 4855,
                            "name": "Identifier",
                            "src": "13334:3:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4832,
                              "type": "uint256",
                              "value": "_value"
                            },
                            "id": 4856,
                            "name": "Identifier",
                            "src": "13339:6:7"
                          }
                        ],
                        "id": 4857,
                        "name": "FunctionCall",
                        "src": "13289:57:7"
                      }
                    ],
                    "id": 4858,
                    "name": "Return",
                    "src": "13282:64:7"
                  }
                ],
                "id": 4859,
                "name": "Block",
                "src": "13200:153:7"
              }
            ],
            "id": 4860,
            "name": "FunctionDefinition",
            "src": "12994:359:7"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "externalTokenTransferFrom",
              "payable": false,
              "scope": 4967,
              "stateMutability": "nonpayable",
              "superFunction": 5145,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_externalToken",
                      "scope": 4898,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 11999,
                          "type": "contract StandardToken"
                        },
                        "id": 4861,
                        "name": "UserDefinedTypeName",
                        "src": "13878:13:7"
                      }
                    ],
                    "id": 4862,
                    "name": "VariableDeclaration",
                    "src": "13878:28:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_from",
                      "scope": 4898,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4863,
                        "name": "ElementaryTypeName",
                        "src": "13908:7:7"
                      }
                    ],
                    "id": 4864,
                    "name": "VariableDeclaration",
                    "src": "13908:13:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_to",
                      "scope": 4898,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4865,
                        "name": "ElementaryTypeName",
                        "src": "13923:7:7"
                      }
                    ],
                    "id": 4866,
                    "name": "VariableDeclaration",
                    "src": "13923:11:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_value",
                      "scope": 4898,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 4867,
                        "name": "ElementaryTypeName",
                        "src": "13936:4:7"
                      }
                    ],
                    "id": 4868,
                    "name": "VariableDeclaration",
                    "src": "13936:11:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4898,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4869,
                        "name": "ElementaryTypeName",
                        "src": "13948:7:7"
                      }
                    ],
                    "id": 4870,
                    "name": "VariableDeclaration",
                    "src": "13948:7:7"
                  }
                ],
                "id": 4871,
                "name": "ParameterList",
                "src": "13877:79:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4898,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4877,
                        "name": "ElementaryTypeName",
                        "src": "14062:4:7"
                      }
                    ],
                    "id": 4878,
                    "name": "VariableDeclaration",
                    "src": "14062:4:7"
                  }
                ],
                "id": 4879,
                "name": "ParameterList",
                "src": "14061:6:7"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4082,
                      "type": "modifier ()",
                      "value": "onlyRegisteredScheme"
                    },
                    "id": 4872,
                    "name": "Identifier",
                    "src": "13972:20:7"
                  }
                ],
                "id": 4873,
                "name": "ModifierInvocation",
                "src": "13972:20:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4215,
                      "type": "modifier (bytes32)",
                      "value": "onlySubjectToConstraint"
                    },
                    "id": 4874,
                    "name": "Identifier",
                    "src": "13997:23:7"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "65787465726e616c546f6b656e5472616e7366657246726f6d",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"externalTokenTransferFrom\"",
                      "value": "externalTokenTransferFrom"
                    },
                    "id": 4875,
                    "name": "Literal",
                    "src": "14021:27:7"
                  }
                ],
                "id": 4876,
                "name": "ModifierInvocation",
                "src": "13997:52:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_contract$_StandardToken_$11999",
                                  "typeString": "contract StandardToken"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3981,
                              "type": "function (address,address,address,address,uint256)",
                              "value": "ExternalTokenTransferFrom"
                            },
                            "id": 4880,
                            "name": "Identifier",
                            "src": "14082:25:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 4881,
                                "name": "Identifier",
                                "src": "14108:3:7"
                              }
                            ],
                            "id": 4882,
                            "name": "MemberAccess",
                            "src": "14108:10:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4862,
                              "type": "contract StandardToken",
                              "value": "_externalToken"
                            },
                            "id": 4883,
                            "name": "Identifier",
                            "src": "14120:14:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4864,
                              "type": "address",
                              "value": "_from"
                            },
                            "id": 4884,
                            "name": "Identifier",
                            "src": "14136:5:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4866,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 4885,
                            "name": "Identifier",
                            "src": "14143:3:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4868,
                              "type": "uint256",
                              "value": "_value"
                            },
                            "id": 4886,
                            "name": "Identifier",
                            "src": "14148:6:7"
                          }
                        ],
                        "id": 4887,
                        "name": "FunctionCall",
                        "src": "14082:73:7"
                      }
                    ],
                    "id": 4888,
                    "name": "ExpressionStatement",
                    "src": "14082:73:7"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 4879
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_StandardToken_$11999",
                                  "typeString": "contract StandardToken"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "externalTokenTransferFrom",
                              "referencedDeclaration": 3814,
                              "type": "function (contract StandardToken,address,address,uint256) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3903,
                                  "type": "contract Avatar",
                                  "value": "avatar"
                                },
                                "id": 4889,
                                "name": "Identifier",
                                "src": "14172:6:7"
                              }
                            ],
                            "id": 4890,
                            "name": "MemberAccess",
                            "src": "14172:32:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4862,
                              "type": "contract StandardToken",
                              "value": "_externalToken"
                            },
                            "id": 4891,
                            "name": "Identifier",
                            "src": "14205:14:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4864,
                              "type": "address",
                              "value": "_from"
                            },
                            "id": 4892,
                            "name": "Identifier",
                            "src": "14221:5:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4866,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 4893,
                            "name": "Identifier",
                            "src": "14228:3:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4868,
                              "type": "uint256",
                              "value": "_value"
                            },
                            "id": 4894,
                            "name": "Identifier",
                            "src": "14233:6:7"
                          }
                        ],
                        "id": 4895,
                        "name": "FunctionCall",
                        "src": "14172:68:7"
                      }
                    ],
                    "id": 4896,
                    "name": "Return",
                    "src": "14165:75:7"
                  }
                ],
                "id": 4897,
                "name": "Block",
                "src": "14072:175:7"
              }
            ],
            "id": 4898,
            "name": "FunctionDefinition",
            "src": "13843:404:7"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "externalTokenIncreaseApproval",
              "payable": false,
              "scope": 4967,
              "stateMutability": "nonpayable",
              "superFunction": 5158,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_externalToken",
                      "scope": 4932,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 11999,
                          "type": "contract StandardToken"
                        },
                        "id": 4899,
                        "name": "UserDefinedTypeName",
                        "src": "14662:13:7"
                      }
                    ],
                    "id": 4900,
                    "name": "VariableDeclaration",
                    "src": "14662:28:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_spender",
                      "scope": 4932,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4901,
                        "name": "ElementaryTypeName",
                        "src": "14692:7:7"
                      }
                    ],
                    "id": 4902,
                    "name": "VariableDeclaration",
                    "src": "14692:16:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_addedValue",
                      "scope": 4932,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 4903,
                        "name": "ElementaryTypeName",
                        "src": "14710:4:7"
                      }
                    ],
                    "id": 4904,
                    "name": "VariableDeclaration",
                    "src": "14710:16:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4932,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4905,
                        "name": "ElementaryTypeName",
                        "src": "14727:7:7"
                      }
                    ],
                    "id": 4906,
                    "name": "VariableDeclaration",
                    "src": "14727:7:7"
                  }
                ],
                "id": 4907,
                "name": "ParameterList",
                "src": "14661:74:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4932,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4913,
                        "name": "ElementaryTypeName",
                        "src": "14845:4:7"
                      }
                    ],
                    "id": 4914,
                    "name": "VariableDeclaration",
                    "src": "14845:4:7"
                  }
                ],
                "id": 4915,
                "name": "ParameterList",
                "src": "14844:6:7"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4082,
                      "type": "modifier ()",
                      "value": "onlyRegisteredScheme"
                    },
                    "id": 4908,
                    "name": "Identifier",
                    "src": "14751:20:7"
                  }
                ],
                "id": 4909,
                "name": "ModifierInvocation",
                "src": "14751:20:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4215,
                      "type": "modifier (bytes32)",
                      "value": "onlySubjectToConstraint"
                    },
                    "id": 4910,
                    "name": "Identifier",
                    "src": "14776:23:7"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "65787465726e616c546f6b656e496e637265617365417070726f76616c",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"externalTokenIncreaseApproval\"",
                      "value": "externalTokenIncreaseApproval"
                    },
                    "id": 4911,
                    "name": "Literal",
                    "src": "14800:31:7"
                  }
                ],
                "id": 4912,
                "name": "ModifierInvocation",
                "src": "14776:56:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_contract$_StandardToken_$11999",
                                  "typeString": "contract StandardToken"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3991,
                              "type": "function (address,contract StandardToken,address,uint256)",
                              "value": "ExternalTokenIncreaseApproval"
                            },
                            "id": 4916,
                            "name": "Identifier",
                            "src": "14865:29:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 4917,
                                "name": "Identifier",
                                "src": "14895:3:7"
                              }
                            ],
                            "id": 4918,
                            "name": "MemberAccess",
                            "src": "14895:10:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4900,
                              "type": "contract StandardToken",
                              "value": "_externalToken"
                            },
                            "id": 4919,
                            "name": "Identifier",
                            "src": "14906:14:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4902,
                              "type": "address",
                              "value": "_spender"
                            },
                            "id": 4920,
                            "name": "Identifier",
                            "src": "14921:8:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4904,
                              "type": "uint256",
                              "value": "_addedValue"
                            },
                            "id": 4921,
                            "name": "Identifier",
                            "src": "14930:11:7"
                          }
                        ],
                        "id": 4922,
                        "name": "FunctionCall",
                        "src": "14865:77:7"
                      }
                    ],
                    "id": 4923,
                    "name": "ExpressionStatement",
                    "src": "14865:77:7"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 4915
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_StandardToken_$11999",
                                  "typeString": "contract StandardToken"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "externalTokenIncreaseApproval",
                              "referencedDeclaration": 3843,
                              "type": "function (contract StandardToken,address,uint256) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3903,
                                  "type": "contract Avatar",
                                  "value": "avatar"
                                },
                                "id": 4924,
                                "name": "Identifier",
                                "src": "14959:6:7"
                              }
                            ],
                            "id": 4925,
                            "name": "MemberAccess",
                            "src": "14959:36:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4900,
                              "type": "contract StandardToken",
                              "value": "_externalToken"
                            },
                            "id": 4926,
                            "name": "Identifier",
                            "src": "14996:14:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4902,
                              "type": "address",
                              "value": "_spender"
                            },
                            "id": 4927,
                            "name": "Identifier",
                            "src": "15012:8:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4904,
                              "type": "uint256",
                              "value": "_addedValue"
                            },
                            "id": 4928,
                            "name": "Identifier",
                            "src": "15022:11:7"
                          }
                        ],
                        "id": 4929,
                        "name": "FunctionCall",
                        "src": "14959:75:7"
                      }
                    ],
                    "id": 4930,
                    "name": "Return",
                    "src": "14952:82:7"
                  }
                ],
                "id": 4931,
                "name": "Block",
                "src": "14855:186:7"
              }
            ],
            "id": 4932,
            "name": "FunctionDefinition",
            "src": "14623:418:7"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "externalTokenDecreaseApproval",
              "payable": false,
              "scope": 4967,
              "stateMutability": "nonpayable",
              "superFunction": 5171,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_externalToken",
                      "scope": 4966,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 11999,
                          "type": "contract StandardToken"
                        },
                        "id": 4933,
                        "name": "UserDefinedTypeName",
                        "src": "15461:13:7"
                      }
                    ],
                    "id": 4934,
                    "name": "VariableDeclaration",
                    "src": "15461:28:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_spender",
                      "scope": 4966,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4935,
                        "name": "ElementaryTypeName",
                        "src": "15491:7:7"
                      }
                    ],
                    "id": 4936,
                    "name": "VariableDeclaration",
                    "src": "15491:16:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_subtractedValue",
                      "scope": 4966,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 4937,
                        "name": "ElementaryTypeName",
                        "src": "15509:4:7"
                      }
                    ],
                    "id": 4938,
                    "name": "VariableDeclaration",
                    "src": "15509:21:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4966,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4939,
                        "name": "ElementaryTypeName",
                        "src": "15531:7:7"
                      }
                    ],
                    "id": 4940,
                    "name": "VariableDeclaration",
                    "src": "15531:7:7"
                  }
                ],
                "id": 4941,
                "name": "ParameterList",
                "src": "15460:79:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4966,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4947,
                        "name": "ElementaryTypeName",
                        "src": "15649:4:7"
                      }
                    ],
                    "id": 4948,
                    "name": "VariableDeclaration",
                    "src": "15649:4:7"
                  }
                ],
                "id": 4949,
                "name": "ParameterList",
                "src": "15648:6:7"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4082,
                      "type": "modifier ()",
                      "value": "onlyRegisteredScheme"
                    },
                    "id": 4942,
                    "name": "Identifier",
                    "src": "15555:20:7"
                  }
                ],
                "id": 4943,
                "name": "ModifierInvocation",
                "src": "15555:20:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4215,
                      "type": "modifier (bytes32)",
                      "value": "onlySubjectToConstraint"
                    },
                    "id": 4944,
                    "name": "Identifier",
                    "src": "15580:23:7"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "65787465726e616c546f6b656e4465637265617365417070726f76616c",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"externalTokenDecreaseApproval\"",
                      "value": "externalTokenDecreaseApproval"
                    },
                    "id": 4945,
                    "name": "Literal",
                    "src": "15604:31:7"
                  }
                ],
                "id": 4946,
                "name": "ModifierInvocation",
                "src": "15580:56:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_contract$_StandardToken_$11999",
                                  "typeString": "contract StandardToken"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4001,
                              "type": "function (address,contract StandardToken,address,uint256)",
                              "value": "ExternalTokenDecreaseApproval"
                            },
                            "id": 4950,
                            "name": "Identifier",
                            "src": "15669:29:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 4951,
                                "name": "Identifier",
                                "src": "15699:3:7"
                              }
                            ],
                            "id": 4952,
                            "name": "MemberAccess",
                            "src": "15699:10:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4934,
                              "type": "contract StandardToken",
                              "value": "_externalToken"
                            },
                            "id": 4953,
                            "name": "Identifier",
                            "src": "15710:14:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4936,
                              "type": "address",
                              "value": "_spender"
                            },
                            "id": 4954,
                            "name": "Identifier",
                            "src": "15725:8:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4938,
                              "type": "uint256",
                              "value": "_subtractedValue"
                            },
                            "id": 4955,
                            "name": "Identifier",
                            "src": "15734:16:7"
                          }
                        ],
                        "id": 4956,
                        "name": "FunctionCall",
                        "src": "15669:82:7"
                      }
                    ],
                    "id": 4957,
                    "name": "ExpressionStatement",
                    "src": "15669:82:7"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 4949
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_StandardToken_$11999",
                                  "typeString": "contract StandardToken"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "externalTokenDecreaseApproval",
                              "referencedDeclaration": 3872,
                              "type": "function (contract StandardToken,address,uint256) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3903,
                                  "type": "contract Avatar",
                                  "value": "avatar"
                                },
                                "id": 4958,
                                "name": "Identifier",
                                "src": "15768:6:7"
                              }
                            ],
                            "id": 4959,
                            "name": "MemberAccess",
                            "src": "15768:36:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4934,
                              "type": "contract StandardToken",
                              "value": "_externalToken"
                            },
                            "id": 4960,
                            "name": "Identifier",
                            "src": "15805:14:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4936,
                              "type": "address",
                              "value": "_spender"
                            },
                            "id": 4961,
                            "name": "Identifier",
                            "src": "15821:8:7"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4938,
                              "type": "uint256",
                              "value": "_subtractedValue"
                            },
                            "id": 4962,
                            "name": "Identifier",
                            "src": "15831:16:7"
                          }
                        ],
                        "id": 4963,
                        "name": "FunctionCall",
                        "src": "15768:80:7"
                      }
                    ],
                    "id": 4964,
                    "name": "Return",
                    "src": "15761:87:7"
                  }
                ],
                "id": 4965,
                "name": "Block",
                "src": "15659:196:7"
              }
            ],
            "id": 4966,
            "name": "FunctionDefinition",
            "src": "15422:433:7"
          }
        ],
        "id": 4967,
        "name": "ContractDefinition",
        "src": "462:15395:7"
      }
    ],
    "id": 4968,
    "name": "SourceUnit",
    "src": "0:15858:7"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-02-04T21:57:39.052Z"
}